SmptClient
可用于通过中继服务器发送电子邮件。但是SmtpClient
是否也能够直接向接收方发送电子邮件而不是通过中继服务器?
修改
有哪些想法SmtpCLient
需要如何配置才能将电子邮件直接发送到接收器?
我尝试使用以下代码,但我得到了" SMTP服务器需要安全连接或客户端未经过身份验证。服务器响应为:5.5.1需要身份验证。"
public class EmailService : IIdentityMessageService
{
public Task SendAsync(IdentityMessage message)
{
// var credentialUserName = "myAccount@gmail.com";
var sentFrom = "myAccount@gmail.com";
// var pwd = "myPwd";
System.Net.Mail.SmtpClient client =
new System.Net.Mail.SmtpClient("smtp.gmail.com");
client.Port = 587;
client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
/* System.Net.NetworkCredential credentials =
new System.Net.NetworkCredential(credentialUserName, pwd);
*/
client.EnableSsl = true;
// client.Credentials = credentials;
var mail =
new System.Net.Mail.MailMessage(sentFrom, message.Destination);
mail.Subject = message.Subject;
mail.Body = message.Body;
return client.SendMailAsync(mail);
}
}
第二次编辑:
Thanx,它现在有效。应用已直接(而不是通过myAccount@gmail.com
)向otherAccount@gmail.com
发送电子邮件。这是代码:
public class EmailService : IIdentityMessageService
{
public Task SendAsync(IdentityMessage message)
{
var sentFrom = "myAccount@gmail.com";
System.Net.Mail.SmtpClient client =
new System.Net.Mail.SmtpClient("gmail-smtp-in.l.google.com");
client.Port = 25;
client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.EnableSsl = true;
var mail =
new System.Net.Mail.MailMessage(sentFrom, message.Destination);
mail.Subject = message.Subject;
mail.Body = message.Body;
return client.SendMailAsync(mail);
}
}
谢谢
答案 0 :(得分:2)
简短回答:是的!
中继服务器只是一台服务器,配置为接受所有电子邮件并将其传递到正确的目的地。您也可以直接联系正确的目标服务器并在那里发送电子邮件。
当然,这是因为没有防火墙问题阻止您直接联系目标服务器。
修改强>
服务器smtp.gmail.com
用于gmail用户发送(外发)电子邮件,即您必须使用您的Gmail用户名和密码进行身份验证才能允许以这种方式发送电子邮件,但如果您这样做,则可以发送给任何收件人,也就是非gmail地址。
我理解您的原始问题意味着您希望在不使用代理的情况下向(在本例中)发送电子邮件地址。在这种情况下,您的客户端应该像尝试发送到gmail-address的任意电子邮件服务器一样,即它应该连接到MX-records所给出的域的官方传入SMTP服务器之一在DNS中。例如。其中一个gmail的MX记录指向gmail-smtp-in.l.google.com
,如果你连接到该服务器的端口25,你可以向gmail-address提交一封电子邮件(你也可以完全欺骗发送地址,但是垃圾邮件过滤可能会导致您的电子邮件无法发送。
我对防火墙问题的警告解释如下:大多数ISP不允许将端口25的传出TCP连接发送到除自己的服务器之外的其他主机。这只是因为上面提到的欺骗可能性,即如果您的ISP允许您与其他电子邮件服务器的端口25进行TCP连接,您可以使用它来发送垃圾邮件。因此,您的ISP可能不允许您这样做,而是应该通过您的ISP转发您的电子邮件,以便他们可以采取适当的措施,如果您尝试向人们发送垃圾邮件。