【问题标题】:ASP.NET SMTP and GmailASP.NET SMTP 和 Gmail
【发布时间】:2011-05-05 18:28:39
【问题描述】:

问题:是否可以在运行时配置多个 SMTP 服务器或更新 SMTP 对象服务器信息?

问题描述: 我正在处理的网站有几个页面可以发送电子邮件。我们的网站使用的是 Gmail,因此即使它是一个自定义域,我们的电子邮件也会通过 Gmail SMTP 服务器发送出去。

一些电子邮件来自系统,一些电子邮件来自某些组中的用户。我有一个配置了系统管理员电子邮件的 SMTP 服务器,例如admin@mysite.com 这工作正常,当我收到来自 admin@mysite.com 的电子邮件时,它会显示

我们的一个用户组让我们称之为“groupA”在我们的域上配置了一个电子邮件,即 groupA@mysite.com 当我发送电子邮件并将 MailMessage 对象的发件人地址指定为 groupA@mysite.com 时,它仍然显示在我的前景中来自 admin@mysite.com 我做了一些进一步的测试,如果我将发件人地址和回复指定为 groupA@mysite.com 它将显示为 From=admin@mysite.com 但是当我选择在 Outlook 中回复它显示 groupA@mysite.com 我最好的猜测是 Gmail 正在用 SMTP 用户覆盖发件人地址以防止电子邮件欺骗。

我找到了这个:http://www.systemnetmail.com/faq/4.1.aspx,但它对我不起作用,因为 A、B 和 C 组都需要从同一页面发送电子邮件。

【问题讨论】:

    标签: asp.net configuration smtp gmail


    【解决方案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);
    

    您显然可以在应用设置中存储您的用户名和密码

    【讨论】:

    • 我不想“伪造”发件人地址。在我的示例中,groupA@mysite.com 是我们为站点用户之一设置的域上的有效电子邮件地址。我想要做的就是使用该地址而不是配置的 SMTP 用户帐户地址从站点发送电子邮件。对于 groupB@mysite.com,我希望它来自该地址。
    • 当您通过 Gmail SMTP 发送电子邮件时,您必须使用 SMTP 身份验证。您登录该 SMTP 时使用的该用户名将位于电子邮件的“发件人”字段中。
    • 我意识到这一点。这就是为什么我的问题是关于配置多个 SMTP 连接的原因。
    • 您不能简单地创建多个SmtpClient 对象来执行此操作吗?您可以将其他 smtp 设置存储在您的应用设置中。
    • 我是这么想的,但我不知道如何设置用户信息。我不知道 .UserCredentials 属性及其工作原理。我正在寻找“用户名”和“密码”属性,就像它们存在于网络配置中一样,但没有找到它们,因此我感到困惑。感谢您的帮助。
    猜你喜欢
    • 2019-01-20
    • 2015-12-31
    • 2013-06-21
    • 2011-02-27
    • 2017-10-26
    • 2011-12-20
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多