【问题标题】:Send email using asp.net, C#使用 asp.net、C# 发送电子邮件
【发布时间】:2017-08-13 13:48:37
【问题描述】:

在我的网络应用程序中,我有一个表格可以向这群人发送电子邮件,我想发送一份抄送,但我有一个例外:

指定的字符串不是电子邮件地址所需的格式。

这是我的代码:

protected void SendButton_Click(object sender, EventArgs e)
{
    string smtpAddress = "smtp.office365.com";
    int portNumber = 587;
    bool enableSSL = true;

    string emailFrom = from.Text;
    string password = PassTextBox.Text;
    string emailTo = toddl.SelectedValue.ToString();
    string subject = subject_txt.Text;

    string body = txtBody.Text;

    using (MailMessage mail = new MailMessage())
    {
        mail.From = new MailAddress(emailFrom);
        mail.To.Add(emailTo);
        mail.Subject = subject;
        mail.Body = body;
        MailAddress copy1 = new MailAddress(ccddl1.SelectedValue.ToString());
        if(copy1!=null)
        {
            mail.CC.Add(copy1);
        }
        MailAddress copy2 = new MailAddress(ccddl2.SelectedValue.ToString());
        if (copy2 != null)
        {
           mail.CC.Add(copy2);
        }

        mail.IsBodyHtml = true;
        // Can set to false, if you are sending pure text.
        if (syllabus_attach.HasFile)
        {
            string FileName = Path.GetFileName(syllabus_attach.PostedFile.FileName);
            mail.Attachments.Add(new Attachment(syllabus_attach.PostedFile.InputStream, FileName));
        }
        if (course_exam_attach.HasFile)
        {
            string FileName = Path.GetFileName(course_exam_attach.PostedFile.FileName);
            mail.Attachments.Add(new Attachment(course_exam_attach.PostedFile.InputStream, FileName));
        }
        if (answer_key_attach.HasFile)
        {
            string FileName = Path.GetFileName(answer_key_attach.PostedFile.FileName);
            mail.Attachments.Add(new Attachment(answer_key_attach.PostedFile.InputStream, FileName));
        }


        using (SmtpClient smtp = new SmtpClient(smtpAddress, portNumber))

        {
            smtp.UseDefaultCredentials = true;
            smtp.Credentials = new NetworkCredential(emailFrom, password);
            smtp.EnableSsl = enableSSL;

            smtp.Send(mail);
        }


        string script = "alert(\"Request Sent Successfully!\");";
        ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScript", script, true);
    }
}

【问题讨论】:

  • 异常意味着ccddl1.SelectedValue.ToString()ccddl2.SelectedValue.ToString() 不能被解析为电子邮件地址。在调用MailAddress(string) 之前,您应该检查这两个值以确保它们已设置并且是有效地址,而不是检查copy1copy2 是否为空。
  • 似乎错误相当直接。确保在在 Stack Overflow 上发布问题之前进行基本调试。

标签: c# asp.net email smtp


【解决方案1】:

你应该把抄送码改成

if(!String.IsNullOrWhitespace(ccddl1.SelectedValue.ToString())
{
    mail.CC.Add(new MailAddress(ccddl1.SelectedValue.ToString());
}

if (!String.IsNullOrWhitespace(ccddl2.SelectedValue.ToString())
{
   mail.CC.Add(new MailAddress(ccddl2.SelectedValue.ToString()));
}

【讨论】:

    猜你喜欢
    • 2012-07-27
    • 2011-05-24
    • 2012-01-10
    • 1970-01-01
    • 2016-04-17
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多