以asp.net形式发送邮件具有挑战性

时间:2014-05-27 21:06:34

标签: c# asp.net email

我已将此表格和此C#代码用于邮寄(联系我们表格) 我有这个错误

SMTP服务器需要安全连接,或者客户端未经过身份验证。服务器响应为:5.7.0必须首先发出STARTTLS命令。 m2sm37748843wjf.42 - gsmtp

这是我的代码

protected void Page_Load(object sender, EventArgs e)
{
    lblError.Visible = false;
}

protected void Button1_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        try
        {
            string strbody = string.Empty;
            strbody += string.Format("<b>Name </b> :{0} <br /> ", TextboxName.Text);
            strbody += string.Format("<b>E-Mail</b>: <a href='mailto:{0}'>{0}</a><br />", textboxemail.Text);
            strbody += string.Format("<b> Subject</b> :{0} <br />", textboxwebsite.Text);
            strbody += string.Format("<b>Description</b>: {0}<br />",                           textboxmessage.Text.Replace("\n", "<br />"));

            System.Net.Mail.MailMessage oMailMessage = new                           System.Net.Mail.MailMessage();
            System.Net.Mail.MailAddress oMailAddress = null;
            oMailAddress = new System.Net.Mail.MailAddress
                (
                    "salarzardouz@gmail.com",
                    "Sent By salar zardouz website",
                    System.Text.Encoding.UTF8
                );
            oMailMessage.From = oMailAddress;
            oMailMessage.Sender = oMailAddress;
            oMailMessage.To.Clear();
            oMailMessage.CC.Clear();
            oMailMessage.Bcc.Clear();
            oMailMessage.ReplyToList.Clear();
            oMailMessage.Attachments.Clear();
            oMailMessage.ReplyToList.Add(oMailAddress);
            oMailMessage.Bcc.Add("salarzardouz@outlook.com");
            oMailAddress = new System.Net.Mail.MailAddress
                (
                    textboxemail.Text,
                    textboxmessage.Text,
                    System.Text.Encoding.UTF8
                );
            oMailMessage.To.Add(oMailAddress);

            oMailMessage.BodyEncoding = System.Text.Encoding.UTF8;
            oMailMessage.Body = strbody;

            oMailMessage.SubjectEncoding = System.Text.Encoding.UTF8;
            oMailMessage.Subject = "[-<Company Name>-] - " + textboxwebsite.Text;

            oMailMessage.IsBodyHtml = true;

            oMailMessage.Priority = System.Net.Mail.MailPriority.Normal;

            oMailMessage.DeliveryNotificationOptions =
                System.Net.Mail.DeliveryNotificationOptions.OnSuccess ;
            string strRootRelativePathName = "~/Attachments/Attachment.png";
            string strPathName = Server.MapPath(strRootRelativePathName);

            if (System.IO.File.Exists(strPathName))
            {
                System.Net.Mail.Attachment oAttachment =
                    new System.Net.Mail.Attachment(strPathName);

                oMailMessage.Attachments.Add(oAttachment);
            }
            System.Net.Mail.SmtpClient oSmtpClient =
                new System.Net.Mail.SmtpClient();
            oSmtpClient.Timeout = 100000;
            oSmtpClient.EnableSsl = false;
            oSmtpClient.Send(oMailMessage);

            string strInformationMessage =
                "Your Email Has been successfully sent";
            lblError.Visible = true;
            lblError.Text = strInformationMessage;
        }
        catch (System.Exception ex)
        {
            DisplayErrorMessage(ex.Message);
        }
    }
}
protected virtual void DisplayErrorMessage(string message)
{
    lblError.Visible = true;

    lblError.Text =
        string.Format("<div class='error'>{0}</div>", message);
}

1 个答案:

答案 0 :(得分:0)

您检查过电子邮件的服务器属性吗?也许您需要SSL身份验证。

例如,在gmail上,您必须进行身份验证:

smtp1.Host = "smtp.gmail.com"
        smtp1.Credentials = New System.Net.NetworkCredential("xxxx@xxxxx.com", "xxxxxxx")
        smtp1.Port = 587
        smtp1.EnableSsl = True
        smtp1.DeliveryMethod = Net.Mail.SmtpDeliveryMethod.Network

        smtp1.Send(correo1)