我正在使用一个功能,用户可以使用asp.net webApp发送邮件。这个想法是使用保存在其成员资格表中的地址发送邮件。使用当前代码,我收到的是使用地址testUser@gmail.com发送邮件,但我想要的是使用存储在成员资格表中的电子邮件地址发送邮件。 提前谢谢。
var email = new MailMessage(mailContent.From, mailContent.To, mailContent.Subject, mailContent.Body);
public static SendEmailResult SendEmail(MailMessage message)
{
message.BodyEncoding = Encoding.UTF8;
message.IsBodyHtml = true;
var mailClient = new SmtpClient();
var log = new SendEmailResult() { Message = message };
try
{
mailClient.Send(message);
}
catch (Exception ex)
{
log.Exception = ex;
}
return log;
}
我的网络配置
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network enableSsl="true"
defaultCredentials="false"
host="smtp.gmail.com"
port="587"
userName="testUser@gmail.com"
password="myultrasecretpassword" />
</smtp>
</mailSettings>
</system.net>
答案 0 :(得分:1)
幸运的是,我认为不可能以别人的名义发送电子邮件(使用其他人的凭据)。
SmtpClient
将引发异常(SmtpException
{{ 3}})。SmtpClient
实际上只愿意发送电子邮件。UseDefaultCredentials
,凭据(默认凭据)仍应与电子邮件地址的用户匹配,并且应获得授权。所有这一切都是因为今天存在许多防止垃圾邮件的机制。该系统甚至可以让你自己做任何不是一个好主意的事情。即使业务要求需要,从安全的角度发送电子邮件也不是一个好主意。
System.Net.Mail
提供了一个非常干净和漂亮的界面和API,但你必须解决你想要的用法。我去过那里,做到了。我的意思是同样的情况。
答案 1 :(得分:0)
从“成员资格”表中获取用户详细信息后(您可以执行此操作),您可以在发送之前为SMTP客户端指定一些凭据:
var mailClient = new SmtpClient();
mailClient.Credentials = new System.Net.NetworkCredential("username", "password");
//etc...