使用C#中的System.Net.Mail发送电子邮件

本文关键字:电子邮件 Mail Net 中的 System 使用 | 更新日期: 2023-09-27 18:19:34

可能重复:
通过gmail使用System.Net.Mail发送电子邮件。(C#)

我使用此代码使用C#.Net发送电子邮件但它在运行时会产生错误。代码为:

 MailMessage MyMailMessage = new MailMessage("example@gmail.com", "example@gmail.com",
"write your subject Here ", "Hi,This is the test message ");
MyMailMessage.IsBodyHtml = false;
NetworkCredential mailAuthentication = new NetworkCredential("example@gmail.com","xxxxxxxx");
    SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587);
    mailClient.EnableSsl = true;
    mailClient.UseDefaultCredentials = false;
    mailClient.Credentials = mailAuthentication;
    mailClient.Send(MyMailMessage);

在添加我的gmail用户名和密码并运行代码后,出现异常

mailClient.Send(MyMailMessage); 

带有消息

Failure sending mail.

我也试过端口25,但问题仍然存在。

除了Visual Studio和.Net Framework之外,还需要其他什么吗?我有所有版本的.Net Framework。

请帮帮我!

使用C#中的System.Net.Mail发送电子邮件

这些是我用于从GMail发送电子邮件的设置,请将它们放在web.config中,然后您只需要使用new SmtpClient().Send(msg);即可发送邮件。如果您在应用程序中从多个位置发送邮件,这将非常方便。它还允许您更改邮件配置,而无需重新编译应用程序

<configuration>
    <system.net>
        <mailSettings>
            <smtp deliveryMethod="Network" >
                <network host="smtp.gmail.com" port="587" userName="an-email@gmail.com" password="********" enableSsl="true" defaultCredentials="false" />
            </smtp>
        </mailSettings>
    </system.net>
</configuration>

EDIT:由于web.config中应该已经有configuration元素,请确保只复制/粘贴system.net元素,我通常将其直接放在system.web 下方

尝试以下操作,

  var smtp = new SmtpClient
                    {
                        Host = "smtp.gmail.com",
                        Port = 587,
                        EnableSsl = true,
                        DeliveryMethod = SmtpDeliveryMethod.Network,
                        UseDefaultCredentials = false,
                        Credentials = new NetworkCredential(<type your email address>, <type your password>)
                    };
                    using (var message = new MailMessage(<type your email address>, toAddress)
                    {
                        Subject = <subject>,
                        Body = <body>
                    })
                    {
                        smtp.Send(message);
                    }

Gmail SSL端口为465,如下所示。。。http://support.google.com/mail/bin/answer.py?hl=en&answer=13287

https://stackoverflow.com/a/489594/707000

"上面的答案不起作用。你必须设置"DeliveryMethod=SmtpDeliveryMethod.Network",否则它会返回一个"客户端未通过身份验证"错误。此外,设置超时总是一个好主意。"

快速搜索显示,大多数示例都没有显式设置mailClient.UseDefaultCredentials = false;。请尝试删除此行,看看它是否有效。

在我看到的例子中,他们同时使用端口587和25。