我想用我的Gmail帐户发送电子邮件,而不是依靠我的主机发送电子邮件。这些邮件是发给我在节目中演出的乐队的个性化邮件。

有可能做到吗?


当前回答

你可以试试Mailkit。它为发送邮件提供了更好、更先进的功能。这里有一个例子

    MimeMessage message = new MimeMessage();
    message.From.Add(new MailboxAddress("FromName", "YOU_FROM_ADDRESS@gmail.com"));
    message.To.Add(new MailboxAddress("ToName", "YOU_TO_ADDRESS@gmail.com"));
    message.Subject = "MyEmailSubject";

    message.Body = new TextPart("plain")
    {
        Text = @"MyEmailBodyOnlyTextPart"
    };

    using (var client = new SmtpClient())
    {
        client.Connect("SERVER", 25); // 25 is port you can change accordingly

        // Note: since we don't have an OAuth2 token, disable
        // the XOAUTH2 authentication mechanism.
        client.AuthenticationMechanisms.Remove("XOAUTH2");

        // Note: only needed if the SMTP server requires authentication
        client.Authenticate("YOUR_USER_NAME", "YOUR_PASSWORD");

        client.Send(message);
        client.Disconnect(true);
    }

其他回答

来源:在ASP发送电子邮件。净c#

下面是一个使用c#发送邮件的示例工作代码,在下面的例子中,我使用谷歌的smtp服务器。

代码是相当不言自明的,替换电子邮件和密码与您的电子邮件和密码值。

public void SendEmail(string address, string subject, string message)
{
    string email = "yrshaikh.mail@gmail.com";
    string password = "put-your-GMAIL-password-here";

    var loginInfo = new NetworkCredential(email, password);
    var msg = new MailMessage();
    var smtpClient = new SmtpClient("smtp.gmail.com", 587);

    msg.From = new MailAddress(email);
    msg.To.Add(new MailAddress(address));
    msg.Subject = subject;
    msg.Body = message;
    msg.IsBodyHtml = true;

    smtpClient.EnableSsl = true;
    smtpClient.UseDefaultCredentials = false;
    smtpClient.Credentials = loginInfo;
    smtpClient.Send(msg);
}

谷歌可能会阻止一些不使用现代安全标准的应用程序或设备的登录尝试。由于这些应用程序和设备更容易被侵入,屏蔽它们有助于让你的账户更安全。

不支持最新安全标准的应用程序包括:

iOS 6或以下版本的iPhone或iPad上的邮件应用程序 8.1版本之前Windows手机上的邮件应用程序 一些桌面邮件客户端,如Microsoft Outlook和Mozilla Thunderbird

因此,您必须在您的谷歌帐户中启用“较少安全登录”。

登录谷歌账号后,进入:

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

在c#中,你可以使用以下代码:

using (MailMessage mail = new MailMessage())
{
    mail.From = new MailAddress("email@gmail.com");
    mail.To.Add("somebody@domain.com");
    mail.Subject = "Hello World";
    mail.Body = "<h1>Hello</h1>";
    mail.IsBodyHtml = true;
    mail.Attachments.Add(new Attachment("C:\\file.zip"));

    using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
    {
        smtp.Credentials = new NetworkCredential("email@gmail.com", "password");
        smtp.EnableSsl = true;
        smtp.Send(mail);
    }
}

编辑2022 从2022年5月30日起,谷歌将不再支持仅使用用户名和密码登录谷歌账户的第三方应用程序或设备。 但是你仍然可以通过你的gmail账户发送电子邮件。

访问https://myaccount.google.com/security,打开两步验证。如有需要,请电话确认。 点击“应用程序密码”,就在“2步验证”勾的下方。 请求邮件应用程序的新密码。

现在只需使用这个密码,而不是原来的一个为您的帐户!

public static void SendMail2Step(string SMTPServer, int SMTP_Port, string From, string Password, string To, string Subject, string Body, string[] FileNames) {            
            var smtpClient = new SmtpClient(SMTPServer, SMTP_Port) {
                DeliveryMethod = SmtpDeliveryMethod.Network,
                UseDefaultCredentials = false,
                EnableSsl = true
            };                
            smtpClient.Credentials = new NetworkCredential(From, Password); //Use the new password, generated from google!
            var message = new System.Net.Mail.MailMessage(new System.Net.Mail.MailAddress(From, "SendMail2Step"), new System.Net.Mail.MailAddress(To, To));
            smtpClient.Send(message);
    }

像这样使用:

SendMail2Step("smtp.gmail.com", 587, "youraccount@gmail.com",
          "yjkjcipfdfkytgqv",//This will be generated by google, copy it here.
          "recipient@barcodes.bg", "test message subject", "Test message body ...", null);

对于其他答案工作“从服务器”首先打开访问gmail帐户不太安全的应用程序。这将在2022年5月30日被弃用

看来最近谷歌改变了安全策略。评分最高的答案不再有效,直到您更改您的帐户设置如下所述:https://support.google.com/accounts/answer/6010255?hl=en-GB 2016年3月,谷歌再次更改设置地点!

为了让它工作,我必须启用我的gmail帐户,以便其他应用程序可以访问它。这是通过“启用不太安全的应用程序”来完成的,也可以使用这个链接: https://accounts.google.com/b/0/DisplayUnlockCaptcha

从另一个答案复制,上述方法工作,但gmail总是替换“从”和“回复”电子邮件与实际发送gmail帐户。然而,显然有一种方法:

http://karmic-development.blogspot.in/2013/10/send-email-from-aspnet-using-gmail-as.html

“3。在帐户选项卡,点击链接“添加另一个电子邮件地址你自己的”,然后验证它

或者可能是这个

更新3:读者德里克·贝内特说:“解决办法是进入你的gmail设置:账户,并“默认”一个gmail账户以外的账户。这将导致gmail用默认帐户的电子邮件地址重写From字段。”