出于某种原因,既不是接受的答案,也没有其他工作为我“通过Gmail在。net发送电子邮件”。为什么它们不会起作用?

更新:我已经在另一个问题中尝试了所有的答案(接受的和其他的),但没有一个有效。

我只是想知道它是否适用于其他人,否则谷歌可能已经改变了一些东西(以前发生过)。

当我尝试使用SmtpDeliveryMethod的代码段时。网络,我很快收到一个SmtpException发送(消息)。信息是

SMTP服务器需要安全连接,否则客户端未经过身份验证。

服务器的回复是:

5.5.1认证要求在“<——说真的,它到此结束。

更新:

这是我很久以前问过的一个问题,公认的答案是我在不同的项目中使用过很多很多次的代码。

我采用了这篇文章和其他EmailSender项目中的一些想法,在Codeplex上创建了一个EmailSender项目。它是为可测试性而设计的,支持我最喜欢的SMTP服务,如GoDaddy和Gmail。


当前回答

我也遇到了同样的问题,但原来是我的病毒防护程序阻止了发出的“垃圾邮件”。关闭这个允许我使用端口587通过GMail发送SMTP电子邮件

其他回答

这是另一个可能的解决方案。我有类似的问题连接到gmail通过IMAP。在尝试了我遇到的所有解决方案之后,你将在这里和其他地方读到SO(例如。启用IMAP,启用不太安全的邮件访问,使用https://accounts.google.com/b/0/displayunlockcaptcha等),我实际上又建立了一个新的gmail帐户。

在我最初的测试中,也就是我创建的第一个gmail帐户中,我已经连接到我的gmail主帐户。这导致了不稳定的行为,其中错误的帐户被谷歌引用。例如,运行https://accounts.google.com/b/0/displayunlockcaptcha打开了我的主帐户,而不是我为此目的而创建的帐户。

因此,当我创建了一个新帐户,并没有将它连接到我的主帐户,在遵循上述所有适当的步骤后,我发现它工作得很好!

我还没有证实这一点。转载),但它显然为我做到了……希望能有所帮助。

打开访问不太安全的应用程序,它将为所有不需要的工作 修改密码。

链接到Gmail设置

这些错误有一个或多个原因。

Log in with your Gmail( or any other if ) in your local system. Also check for Less Secure App and Set it to "Turn On" here is the Link for GMAIL. https://www.google.com/settings/security/lesssecureapps check for EnableSsl in your Email code, and also set it to true. smtp.EnableSsl = true; Also check which port are you using currently. 25 is Global, but you can check it for others too like 587. check here. Does all SMTP communication happen over 25? IF YOU ARE ON REMOTE : Check the answer of Vlad Tamas above.

我从我的gmail帐户发送电子邮件也遇到了一些问题,这是由于上述几种情况。 以下是我如何让它工作的总结,同时保持它的灵活性:

首先,建立你的GMail账户: 启用IMAP并断言正确的最大消息数(可以在这里执行) 确保你的密码至少有7个字符,并且是强密码(根据谷歌) 确保你不需要先输入验证码。您可以通过从浏览器发送测试电子邮件来做到这一点。 在web中进行更改。config(或app.config,我还没有尝试过,但我认为它也很容易让它在windows应用程序中工作):

<configuration>
    <appSettings>
        <add key="EnableSSLOnMail" value="True"/>   
    </appSettings>

    <!-- other settings --> 

    ...

    <!-- system.net settings -->
    <system.net>
        <mailSettings>
            <smtp from="yourusername@gmail.com" deliveryMethod="Network">
                <network 
                    defaultCredentials="false" 
                    host="smtp.gmail.com" 
                    port="587" 
                    password="stR0ngPassW0rd" 
                    userName="yourusername@gmail.com"
                    />
                <!-- When using .Net 4.0 (or later) add attribute: enableSsl="true" and you're all set-->
            </smtp>
        </mailSettings>
    </system.net>
</configuration>
Add a Class to your project:

Imports System.Net.Mail

Public Class SSLMail

    Public Shared Sub SendMail(ByVal e As System.Web.UI.WebControls.MailMessageEventArgs)

        GetSmtpClient.Send(e.Message)

        'Since the message is sent here, set cancel=true so the original SmtpClient will not try to send the message too:
        e.Cancel = True

    End Sub

    Public Shared Sub SendMail(ByVal Msg As MailMessage)
        GetSmtpClient.Send(Msg)
    End Sub

    Public Shared Function GetSmtpClient() As SmtpClient

        Dim smtp As New Net.Mail.SmtpClient
        'Read EnableSSL setting from web.config
        smtp.EnableSsl = CBool(ConfigurationManager.AppSettings("EnableSSLOnMail"))
        Return smtp
    End Function

End Class

现在,无论何时想要发送电子邮件,都需要调用SSLMail。发送邮件:

例如,在带有PasswordRecovery控件的Page中:

Partial Class RecoverPassword
Inherits System.Web.UI.Page

Protected Sub RecoverPwd_SendingMail(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MailMessageEventArgs) Handles RecoverPwd.SendingMail
    e.Message.Bcc.Add("webmaster@example.com")
    SSLMail.SendMail(e)
End Sub

End Class

或者在代码的任何地方都可以调用:

SSLMail.SendMail(New system.Net.Mail.MailMessage("from@from.com","to@to.com", "Subject", "Body"})

我希望这能帮助任何遇到这篇文章的人!(我用的是VB。NET,但是我认为把它转换成任何。NET语言都很简单。)

我也遇到了同样的问题,但原来是我的病毒防护程序阻止了发出的“垃圾邮件”。关闭这个允许我使用端口587通过GMail发送SMTP电子邮件