而不依靠我的主机发送电子邮件,我想通过我的 Gmail 帐户发送邮件。电子邮件是个性化电子邮件发送给我在我的节目播放的带区。是否存在这样的可能?

2008-08-28 13:28:38
问题评论:

如果您使用的 ASP.Net Mvc 我建议让看 MvcMailer: github.com/smsohan/MvcMailer/wiki/MvcMailer-Step-by-Step-Guide

我有如何这样做我的网站jarloo.com/gmail-c上的一个很好示例

如何发送文件使用此代码?

通过与 C# 的 Gmail SMTP 服务器发送电子邮件的可能的重复项

需要注意的发件人限制的 (我希望乐队是成功这是一个问题) support.google.com/a/bin/answer.py?hl=en 及其答案 = 166852

回答:

请务必使用System.Net.Mail,不否决System.Web.MailSystem.Web.Mail的 SSL 是类似二次修改扩展了毛乱七八糟。

using System.Net;
using System.Net.Mail;

var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@example.com", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}

您仍然可以获取用户未登录错误,如果 Google 刚突然决定您发送过去 xx 分钟数太多。如果应始终添加 trySend,it 错误休眠一段时间,然后再次尝试。

有趣的注意︰ 如果您换用使用 = false,' 和 ' 凭据 =...它不会进行身份验证。

有 SPF 使用这种方法没有问题。可以将每个电子邮件客户端配置为完全这样做。您使用您自己的服务器 (即停下手中的比smtp.gmail.comsomething@gmail.com为发件人,就可能会出现问题。顺便说一下︰ smtp.gmail.com自动覆盖的发件人地址如果不是您。

我遇到了很难获取此处理甚至尝试各种调整。根据相关公告上的建议,我发现那是实际上被阻止的电子邮件的成功发送我防病毒。防病毒软件问题中是 McAffee,和其"访问保护"有了"禁止大量邮件蠕虫发送的电子邮件"规则"防病毒保护标准"类别。调整 / 禁用该规则是为我工作,此代码 !

我已收到 5.5.1 身份验证所需的错误消息直到我意识到我已测试已开启的两因素身份验证的帐户 (我个人的一个)。一旦我使用的帐户不具有的它工作正常。我可能还具有密码为生成我我在我的个人帐户,测试的应用程序,但我不想这样做。

上面的答案不起作用。您必须设置DeliveryMethod = SmtpDeliveryMethod.Network或它会回来,"客户端未通过身份验证"的错误。也它始终是最好将超时。

修改后的代码︰

using System.Net.Mail;
using System.Net;

var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@yahoo.com", "To Name");
const string fromPassword = "password";
const string subject = "test";
const string body = "Hey now!!";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
    Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}

有趣;它适用于我的计算机 (TM)。但这看起来貌似合理,因为我会将它添加到我的答案。

嗯我的猜测是,SmtpDeliveryMethod.Network 是默认的但可能更改了默认获取当运行在 IIS 中---是您正在做什么?

我从桌面应用程序中运行它。

我在控制台应用程序中使用相同的代码,而是通过错误"错误发送邮件"。

该答案不起作用。请看一看问题stackoverflow.com/questions/34851484/...

http://www.systemnetmail.com/可能是专用于一个.NET 命名空间...absurdly 最完整的站点,但它具有一切可能需要了解发送邮件通过.NET,ASP.NET 或桌面。

http://www.systemwebmail.com/的原始 URL 中开机自检,但.NET 2.0 及更不应使用。

对于.NET 2.0,上面已经更新到 www.systemnetmail.com 网站。

这是发送带附件的电子邮件。.简单和短.

来源︰ http://coding-issues.blogspot.in/2012/11/sending-email-with-attachments-from-c.html

using System.Net;
using System.Net.Mail;

public void email_send()
{
    MailMessage mail = new MailMessage();
    SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
    mail.From = new MailAddress("your mail@gmail.com");
    mail.To.Add("to_mail@gmail.com");
    mail.Subject = "Test Mail - 1";
    mail.Body = "mail with attachment";

    System.Net.Mail.Attachment attachment;
    attachment = new System.Net.Mail.Attachment("c:/textfile.txt");
    mail.Attachments.Add(attachment);

    SmtpServer.Port = 587;
    SmtpServer.Credentials = new System.Net.NetworkCredential("your mail@gmail.com", "your password");
    SmtpServer.EnableSsl = true;

    SmtpServer.Send(mail);

}

在 gmail 帐户中打开在 Access 为较低安全级别的应用程序

看起来像 google 最近更改安全策略。最佳答案不再起作用,直到您更改您的帐户设置,如下所述︰ https://support.google.com/accounts/answer/6010255?hl=en-GBenter image description here

enter image description here

截止 3 月 2016年到 google 再次更改设置位置 !

这工作对我来说。并且也有关。不清楚我想要禁用该安全机制。可能需要重新思考...

超,它的工作原理

感谢您花时间张贴这-我被翻录掉我的头发。

从安全的角度来看更好一些,开启 2 步验证然后生成并使用应用程序请参阅密码如何根据新的安全策略在.Net 中发送一封电子邮件吗?

内容来源于Stack Overflow Sending email in .NET through Gmail
请输入您的翻译

Sending email in .NET through Gmail

确认取消