c# 资源中的 SmtpClient 由于其保护级别而无法访问

Posted

技术标签:

【中文标题】c# 资源中的 SmtpClient 由于其保护级别而无法访问【英文标题】:SmtpClient in c# resource is inaccessible due to its protection level 【发布时间】:2021-01-03 19:11:03 【问题描述】:

以下 C# 源代码显示了如何使用 SmtpClient 从我的电子邮件地址发送电子邮件。

protected void btnFinal_Click(object sender, EventArgs e)

    SmtpClient smtpClient = new SmtpClient("xxxx");
    MailMessage mailMessagePlainText = new MailMessage();
    mailMessagePlainText.IsBodyhtml = true;
    mailMessagePlainText.BodyEncoding = Encoding.UTF8;

    mailMessagePlainText.Subject = DateTime.Now.ToString("dd-MM-yyyy");

    mailMessagePlainText.From = new MailAddress("myemail@myemail.com, ""); 

    if (count > 1)
    
        values = value.Split(new[]  ';' , 2);
        first = values[0];
        rest = values[1];
        mailMessagePlainText.To.Add(new MailAddress(first.ToString().Trim().ToUpper(), ""));            
    
    else
    
        mailMessagePlainText.To.Add(new MailAddress(second.ToString().Trim().ToUpper(), ""));
    

    try
    
        smtpClient.Send(mailMessagePlainText);
        Page.ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('ok';", true);
    
    catch (Exception ex)
    
        throw (ex);
    

现在我需要在Hyperlinkaspx markup 中使用字符串firstsecond(我的消息的收件人)

<asp:TemplateField HeaderText="Number row"
    ItemStyle-HorizontalAlign="Center"
    ItemStyle-CssClass="ddl_Class_new"
    ItemStyle-Font-Size="Smaller"
    ItemStyle-Font-Names="Arial">
    <ItemTemplate>
        <asp:HyperLink
            ID="HyperLink1"
            runat="server"
            CssClass="ddl_Class_new"
            NavigateUrl='<%# String.Format("Default.aspx?ID=0&TOUSER=1", 
                             Eval("Number row").ToString(), ... ) %>'>

                            <%# Eval("Number_row") %>
        </asp:HyperLink>
    </ItemTemplate>
</asp:TemplateField>

我试过这个没有成功:

NavigateUrl='<%# String.Format("Default.aspx?ID=0&TOUSER=1", 
                 Eval("Number row").ToString(), 
                 first.ToString().Trim().ToUpper()) %>'>

NavigateUrl='<%# String.Format("Default.aspx?ID=0&TOUSER=1", 
                 Eval("Number row").ToString(), 
                 second.ToString().Trim().ToUpper()) %>'>

错误是:

CS0122 first(或 second)由于其保护级别而无法访问

有什么建议吗?

提前感谢您的帮助

更新 #1

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)

    if (e.Row.RowType == DataControlRowType.DataRow)
    
        HyperLink HyperLink1 = (HyperLink)e.Row.FindControl("HyperLink1");
        HyperLink1.NavigateUrl = "Default.aspx?ID=" + DataBinder.Eval(e.Row.DataItem, "Number row").ToString() + "&TOUSER=" + first.ToString();
        HyperLink1.Text = DataBinder.Eval(e.Row.DataItem, "Number row").ToString();
    

错误

Object reference not set to an instance of an object

【问题讨论】:

请说明firstsecond 的声明位置。 firstsecond 是否声明为 public @VDWWD 不是私有的 你的问题。如果您想在 aspx 中访问它们,请将它们公开。 不是方法。变量firstsecond 【参考方案1】:

为什么不在Grid的数据绑定事件后面的代码中全部设置呢?

 HyperLink1.NavigateURL = "default.aspx?id="+first; 

【讨论】:

感谢回复,请参阅第一个问题中的更新#1 它看起来好一些,但它在抱怨什么对象 null ?一个好的做法是在引用对象之前检查空值。 “第一”从何而来,又从何而来? “values”数组在哪里设置?

以上是关于c# 资源中的 SmtpClient 由于其保护级别而无法访问的主要内容,如果未能解决你的问题,请参考以下文章

使用 SmtpClient 通过 C# 发送 HTML 电子邮件

发送匿名电子邮件 C#

C# 使用 SmtpClient 发送内联图像的邮件

C# 使用 SmtpClient 发送带有内联图像的邮件

c# SmtpClient 类无法使用 gmail 发送电子邮件

c#邮件发送