在中等信任下通过 GMail SMTP 发送电子邮件

Posted

技术标签:

【中文标题】在中等信任下通过 GMail SMTP 发送电子邮件【英文标题】:Send Email on GMail SMTP under medium trust 【发布时间】:2010-10-25 06:39:19 【问题描述】:

我需要从我的应用程序发送一封电子邮件,该应用程序将在中等信任下运行。我当前在完全信任下工作正常的电子邮件发送代码在中等信任下抛出 SecurityException

[SecurityException: Request for the permission of type 'System.Net.Mail.SmtpPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]

检查我的 machine.config 和相关文件显示我的 SMTP 访问权限仅限于 Connect。

<SecurityClass Name="SmtpPermission" Description="System.Net.Mail.SmtpPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

<IPermission class="SmtpPermission" version="1" Access="Connect"/>

根据 MSDN,Connect 仅允许端口 25 上的请求。但是 Gmail 服务器在端口 587 上工作。有什么解决方法吗?建议?

【问题讨论】:

赏金,因为我想知道如何在中等信任下发送电子邮件,因为端口 25 几乎总是被阻止。 【参考方案1】:

Gmail 也接受端口 25 ; 你只需给端口 25; 它为我工作。,

【讨论】:

【参考方案2】:

你试过 465 端口吗?

http://support.google.com/mail/bin/answer.py?hl=en&answer=13287

您还可以创建一个网络服务,并将电子邮件从您的应用程序发送到网络服务。然后以完全信任的方式运行 Web 服务。

【讨论】:

Web 服务是个好主意,但我无处可托管它。也许已经存在一个...... 您可以向现有网站添加子域吗? 我使用的主机不可能。这是一个共享的媒体信任托管。即使有可能,子域也会有相同的限制。【参考方案3】:

medium trust 中,是的,您“卡住”了端口 25。如果您可以/有权访问(我指的是您的网络主机)来创建自定义配置文件:

<IPermission class="SmtpPermission" version="1" Unrestricted="true" />

参考文献:

MSDN (Alvar Garcia) - SMTP problems when ASP.NET is not running in full-trust

里克·斯特拉尔 - SmtpClient in Medium Trust

【讨论】:

很好的答案,但不幸的是,这不适用于当前的主机。【参考方案4】:

网络主机通常希望您使用他们自己的 SMTP 服务器来处理您的出站电子邮件。我不知道这是否会给您的特定场景带来问题,但如果不是,您可能应该联系主机并询问他们的 SMTP 服务器是什么,而不是尝试使用外部服务器。

【讨论】:

似乎太愚蠢了,从来没有想到这一点。这就是解决方案。 我以前也遇到过这个问题。很高兴我能帮上忙!

以上是关于在中等信任下通过 GMail SMTP 发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

通过 Gmail SMTP 发送电子邮件时出错

Django 通过 smtp.gmail.com 发送电子邮件的问题

为什么设计不通过gmail smtp发送电子邮件?

如何告诉 Prometheus 的 Alertmanager 通过 Gmail 的 SMTP 服务器发送电子邮件

通过Python中的smtp.gmail.com在GAE上发送电子邮件

Gmail 阻止通过 SMTP 发送电子邮件? [复制]