Skip to main content
 首页 » 编程设计

c#之在 C# 中从 smtp gmail 发送电子邮件

2024年04月30日34yjmyzz

我正在尝试从我的网络应用程序发送电子邮件。我正在使用 smtp gmail 进行相同的操作。但由于某些原因,我无法发送邮件。我尝试了 25,465,587 之类的端口号,但这些都不起作用......

public static void SendMail(string host, string senderName, string frmAddress, string toAddress, int port, string subject, string messageText) 
    { 
        String smtpHost, port1; 
 
        smtpHost = ConfigurationManager.AppSettings["smtphost"].ToString(); 
        port1 = ConfigurationManager.AppSettings["smtpport"].ToString(); 
 
        SmtpClient mailClient = new SmtpClient(smtpHost, Convert.ToInt16(port1)); 
        mailClient.EnableSsl = true; 
 
 
        NetworkCredential cred = new NetworkCredential(); 
        cred.UserName = ConfigurationManager.AppSettings["username"].ToString(); 
        cred.Password = ConfigurationManager.AppSettings["password"].ToString(); 
        mailClient.Credentials = cred; 
 
        mailClient.UseDefaultCredentials = false; 
        //mailClient.Credentials = cred; 
 
        System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); 
        try 
        { 
            MailAddress fromAddress = new MailAddress(frmAddress, senderName); 
            message.From = fromAddress; 
 
            message.To.Add(toAddress); 
            message.Subject = subject; 
 
            message.IsBodyHtml = false; 
            message.Body = messageText; 
 
            mailClient.Send(message); 
            //Response.Write("<script  language='javascript' type='text/javascript'>window.alert('Email Successfully Sent.');</script>"); 
        } 
        catch 
        { 
            //Response.Write("<script  language='javascript' type='text/javascript'>window.alert('Send Email Failed '" + ex.Message + ");</script>"); 
        } 
    } 

调用此方法:

protected void btnMail_Click1(object sender, EventArgs e) 
    { 
        string from = txtEmail.Text; 
        string to = "my gmail id"; 
        string message = taMessage.InnerText; 
 
        Global.SendMail(ConfigurationManager.AppSettings["smtphost"].ToString(), txtName.Text, from, to, Convert.ToInt32(ConfigurationManager.AppSettings["smtpport"]), "Enquiry", taMessage.InnerText); 
    } 

web.config 设置:

<appSettings> 
    <add key="smtphost" value="smtp.gmail.com"/> 
    <!--<add key="smtphost" value="103.231.41.229"/>--> 
    <add key="smtpport" value="587"/> 
    <!--<add key="port" value="25"/>--> 
    <add key="username" value="my gmail id/> 
    <add key="password" value="my password"/> 
    <add key="From" value="my gmail id"/> 
  </appSettings> 

异常:SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应是:5.5.1 身份验证

请您参考如下方法:

这是一个安全问题,默认情况下,Gmail 会阻止自定义应用程序访问您的邮件帐户。您可以将其设置为接受来自您的应用程序的登录。 登录邮件后,

https://www.google.com/settings/security/lesssecureapps

更新:

 msg.IsBodyHtml = true;