我没有依赖我的主机发送电子邮件,而是考虑使用我的Gmail帐户发送电子邮件.这些电子邮件是我在节目中播放的乐队的个性化电子邮件.有可能吗?
我正在使用以下代码发送电子邮件.代码在我的本地计算机中正常运行.但在生产服务器上我收到错误消息
var fromAddress = new MailAddress("mymailid@gmail.com");
var fromPassword = "xxxxxx";
var toAddress = new MailAddress("yourmailid@yourdoamain.com");
string subject = "subject";
string body = "body";
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
smtp.Send(message);
Run Code Online (Sandbox Code Playgroud)
在我的Gmail A/c上,我从生产服务器运行代码后收到了以下电子邮件
嗨,
最近有人使用您的密码尝试登录您的Google帐户mymailid@gmail.com.此人正在使用电子邮件,客户端或移动设备等应用程序.
如果这是一名试图访问您帐户的劫机者,我们会阻止登录尝试.请查看登录尝试的详细信息:
星期五,2014年1月3日13:56:08 UTC时间地址:xxx.xx.xx.xxx(abcd.net.)地点:Philadelphia PA,Philadelphia,PA,USA
如果您无法识别此登录尝试,则其他人可能会尝试访问您的帐户.您应该立即登录您的帐户并重置密码.
重设密码
如果是您并且您在访问帐户时遇到问题,请完成http://support.google.com/mail?p=client_login中列出的问题排查步骤
您诚挚的,Google帐户团队
我想从我的应用程序发送一封电子邮件,我写了以下代码来发送邮件
MailMessage msg = new MailMessage();
msg.From = new MailAddress("mymailid");
msg.To.Add("receipientid");
msg.Subject = "test";
msg.Body = "Test Content";
msg.Priority = MailPriority.High;
SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential("mymailid", "mypassword", "smtp.gmail.com");
client.Host = "smtp.gmail.com";
client.Port = 587;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.EnableSsl = true;
client.UseDefaultCredentials = true;
client.Send(msg);
Run Code Online (Sandbox Code Playgroud)
我在localhost上运行它,所以我正在做什么错误发送它.
当我发送按钮时,它给出了一个错误
SMTP服务器需要安全连接或客户端未经过身份验证.服务器响应为:5.5.1需要身份验证.
Web.config文件中的代码
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="smtpServer" value="smtp.gmail.com" />
<add key="EnableSsl" value …Run Code Online (Sandbox Code Playgroud) 如何发送HTML电子邮件?我使用此答案中的代码发送电子邮件SmtpClient,但它们始终是纯文本,因此下面示例消息中的链接不是这样格式化的.
<p>Welcome to SiteName. To activate your account, visit this URL: <a href="http://SiteName.com/a?key=1234">http://SiteName.com/a?key=1234</a>.</p>
Run Code Online (Sandbox Code Playgroud)
如何在我发送的电子邮件中启用HTML?
是否所有SMTP通信都在port25上的域之间发送电子邮件?所有通信都是无担保的吗?了解使用类似Gmail通信的安全保护Gmail服务器,但必须使用不安全的端口25,对吗?
SMTP可以在任何端口上,但这不是我所说的.我不是在谈论连接到Gmail,Yahoo或ISP SMTP服务器.这些是SMTP中继,它们接受任何希望为其用户加密/未加密的端口的SMTP请求.
但是一旦SMTP中继服务器收到请求,邮件服务器就会根据域名MX记录将其转发到电子邮件.它只在端口25上使用SMTP吗?邮件服务器只知道域名,然后转发它.它无法知道他们正在收听哪个端口.
例如,我正在为我的域托管Exchange服务器2007.我连接到我的Exchange服务器以发送邮件到xyz@gmail.com.我的交换服务器必须通过行业标准协议进行通信,对吧?这是端口25(因为我的Exchange服务器没有端口25就无法工作).
我正在尝试使用Python的smtplib从Google帐户发送电子邮件,但收到错误,现在我有点不知所措.谷歌回应如下:Please log in via your web browser and then try again. Learn more at https://support.google.com/mail/answer/78754.
该帐户启用了两个因素身份验证,因此我使用特定于应用程序的密码登录.根据我的理解,这应该可以在不启用不太安全的应用程序的设置的情况下工作,不应该吗?我一直在尝试使用另一个帐户,同时测试没有问题,但现在我终于获得了正确帐户的凭据,并且它不会接受身份验证.
我知道,有一个与OAuth的使用Python的Gmail的API啄,但如果可能的话,我不想要包含更多的包并重写了,我真的不希望启用"不够安全的应用"设置.有没有办法让这个没有?
如果它有所不同,这是我用于发送电子邮件的代码.如前所述,这与另一个帐户工作正常,所以我不确定它是否真的相关.
def send_mail(to_address, subject, body):
smtp_user = "myaccount@domain.com"
smtp_password = "MyAppPasswordFromGoogle"
server = "smtp.gmail.com"
port = 587
msg = MIMEMultipart("alternative")
msg["Subject"] = subject
msg["From"] = smtp_user
msg["To"] = to_address
msg.attach(MIMEText(body, "html"))
s = smtplib.SMTP(server, port)
s.connect(server, port)
s.ehlo()
s.starttls()
s.ehlo()
s.login(smtp_user, smtp_password)
s.sendmail(smtp_user, to_address, msg.as_string())
s.quit()
Run Code Online (Sandbox Code Playgroud)
修改:两个帐户之间存在一个有趣的区别:在https://myaccount.google.com/lesssecureapps上,我的旧(工作)帐户说"此设置不适用于启用了双因素身份验证的帐户",而新的说法"此设置由您的域管理员管理",即使两者都使用2FA,并且它也强制在两个域中.所以我想域管理员必须改变一些设置,但我不知道会是哪一个.
我一直在努力寻找这个问题,到目前为止一直在悲惨地失败.我最近的尝试是从这个堆栈代码中解除的: 通过带有C#的Gmail SMTP服务器发送电子邮件,但我已经尝试了我可以在堆栈和其他地方找到的所有语法.我的代码目前是:
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential("me@gmail.com", "mypass"),
EnableSsl = true
};
client.Send("me@gmail.com","me@gmail.com","Test", "test message");
Run Code Online (Sandbox Code Playgroud)
运行该代码给我一个立即异常"发送邮件失败",其中包含"无法连接到远程服务器"的内容.
如果我将端口更改为465(如gmail文档建议的那样),我每次都会超时.
我已经读过465不是一个好用的端口,所以我想知道这笔交易是什么让我无法连接.我的用户和通行证是对的.我已经读过我必须在我的Gmail帐户上设置POP服务,所以我这样做了.徒劳无功.
我原本试图让我的品牌GMail帐户工作,但遇到同样的问题,我认为我/我的常规Gmail帐户将更容易...到目前为止,情况并非如此.
我很难让我的PHP脚本发送带有SMTP Gmail帐户的电子邮件.我使用的是PHP和Symfony2 SwiftMailer,但问题似乎在于我的Gmail帐户配置.在我的日志中,我最终得到以下错误消息:
"ERROR - Exception occurred while flushing email queue: Failed to authenticate on SMTP server with username "new.user.name@gmail.com" using 1 possible authenticators"
Run Code Online (Sandbox Code Playgroud)
幸运的是,我有另一个Gmail帐户正在使用另一个应用程序,无数.在我的新盒子上拯救这些参数(用户和密码),eveything工作得很好.
在parameters.yml我有(工作正常):
parameters:
mailer_transport: gmail
mailer_host: ~
mailer_user: old.user.account@gmail.com
mailer_password: old-password
Run Code Online (Sandbox Code Playgroud)
以下是给出auth错误消息的版本:
parameters:
mailer_transport: gmail
mailer_host: ~
mailer_user: new.user.account@gmail.com
mailer_password: new-password
Run Code Online (Sandbox Code Playgroud)
不用说我已经检查,重新检查并再次检查用户和密码.
我在新帐户中查看了"转发和POP/IMAP"下的Gmail帐户设置:我找不到任何关于SMTP的信息.
搜索让我意识到某些验证码策略可能会干扰SMTP帐户.我在这里读到,我应该尝试输入一个验证码短语,我在这里输入,并收到一条好消息:"启用帐户访问权限","请尝试从新设备或应用程序再次登录到您的Google帐户."
再试一次.没运气.
所有这些都发生在我当地的开发环境中(包括OK邮件,而不是OK邮件).
如何在新创建的Gmail帐户中使用SMTP?任何的想法 ?
这可能对你来说非常微不足道,但我无法弄清楚为什么我在运行我的代码时收到此错误消息.我查看了同一网站上的一些相关问题,例如 通过带有C#的Gmail SMTP服务器发送电子邮件, 但没有一个是有帮助的.有人愿意帮忙吗?使用不同的组件也是可以接受的 所以如果有人得到一个可以理解的工作解决方案.
错误消息= SMTP服务器需要安全连接或客户端未经过身份验证.服务器响应为:5.5.1需要身份验证.了解更多信息
这是我的代码
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
message.From = new MailAddress("bob@googlemail.com");
message.To.Add("bob@hotmail.com");
message.Subject = "Hello";
message.Body = "Hello Bob ";
message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);
smtpClient.EnableSsl = true;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new NetworkCredential("MyGoogleMailAccount",
"mygooglemailpassword");
smtpClient.Send(message.From.ToString(), message.To.ToString(),
message.Subject, message.Body);
Run Code Online (Sandbox Code Playgroud) 我写了一个小的.net Windows窗体应用程序.现在我决定收到用户的意见或评论.用户只需在输入表单中编写内容并单击"发送"按钮即可.
我想用最简单的方法.我不想托管任何Web服务或其他应用程序来收集信息.我也没有数据库.没有.我只想知道人们对该应用程序的看法.
你会怎么做?