问题:是否可以在运行时配置多个SMTP服务器或更新SMTP对象服务器信息?
问题描述:我正在处理的网站有几个页面可以发送电子邮件。我们的网站正在使用Gmail,因此即使它是自定义域名,我们的电子邮件也会通过Gmail SMTP服务器发送。
某些电子邮件来自系统,某些电子邮件来自某些群组中的用户。我有一个配置了系统管理员电子邮件的SMTP服务器,例如admin@mysite.com这很好用,当我收到admin@mysite.com显示的电子邮件时
我们的一个用户组叫它“groupA”在我们的域上配置了一个电子邮件,即groupA@mysite.com当我发送电子邮件并指定MailMessage对象的发件人地址为groupA@mysite.com时,它仍会显示我的前景来自admin@mysite.com我做了一些进一步的测试,如果我指定来自地址和ReplyTo作为groupA@mysite.com,它将显示为From=admin@mysite.com但是当我选择时在outlook中回复它显示groupA@mysite.com我最好的猜测是Gmail会覆盖SMTP用户的发件人地址,以防止电子邮件欺骗。
我发现了这个:http://www.systemnetmail.com/faq/4.1.aspx但它对我不起作用,因为A,B和C组都需要从同一页面发送电子邮件。
答案 0 :(得分:1)
据我所知,使用gmail时不可能伪造“来自”地址。 即使你使用应用程序首映,并设置地址别名,它仍然会说“代表发送”。
web.config中的system.net.mail配置仅支持一个配置 您可以在运行时轻松创建自己的自定义配置和配置电子邮件服务器设置,如下所示:
SmtpClient smtp = new SmtpClient("smtp.gmail.com");
smtp.Port = 465;
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;
smtp.UserCredentials = new System.Net.NetworkCredential("yourusername", "yourpassword");
smtp.Send(mail);
您显然可以在应用设置中存储用户名和密码