Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 从Azure发送电子邮件_Email_Azure - Fatal编程技术网

Email 从Azure发送电子邮件

Email 从Azure发送电子邮件,email,azure,Email,Azure,希望有人能帮忙。我想从我的Azure帐户发送电子邮件。我的域名已配置为与Azure一起使用 我无法在网上轻松找到如何从Azure帐户发送电子邮件。有人提到SendGrid,但我的帐户似乎不支持它 有人可以指导我如何从Azure中托管的网站发送电子邮件吗?从第三方SMTP发送不受Azure限制或特定于Azure。使用System.Net.Mail创建邮件,配置SMTP客户端,发送电子邮件: // create the message var msg = new MailMessage(); msg

希望有人能帮忙。我想从我的Azure帐户发送电子邮件。我的域名已配置为与Azure一起使用

我无法在网上轻松找到如何从Azure帐户发送电子邮件。有人提到SendGrid,但我的帐户似乎不支持它


有人可以指导我如何从Azure中托管的网站发送电子邮件吗?

从第三方SMTP发送不受Azure限制或特定于Azure。使用System.Net.Mail创建邮件,配置SMTP客户端,发送电子邮件:

// create the message
var msg = new MailMessage();
msg.From = new MailAddress("info@YourWebSiteDomain.com"); 
msg.To.Add(strTo); 
msg.Subject = strSubject; 
msg.IsBodyHtml = true; 
msg.Body = strMessage;

// configure the smtp server
var smtp = new SmtpClient("YourSMTPServer"); 
var = new System.Net.NetworkCredential("YourSMTPServerUserName", "YourSMTPServerPassword");

// send the message
smtp.Send(msg); 

更新:我在媒体上添加了一篇关于如何使用Azure功能实现这一点的帖子-

我知道这是一篇旧帖子,但我刚刚注册了Azure,我每月通过SendGrid免费收到25000封电子邮件。这些说明非常好,我在几分钟内就启动并运行了:

Azure客户每月可以解锁25000封免费电子邮件


如果你正在寻找一些ESP替代品,你也应该看看!作为一家全球电子邮件服务和基础设施提供商,他们使您能够通过其API、SMTP中继或UI发送、传递和跟踪交易和营销电子邮件,所有这些都来自一个平台,这对于开发人员和电子邮件所有者都是如此


免责声明:我在Mailjet工作,是一名开发人员布道者。

对于希望使用内置.NET SmtpClient而不是SendGrid客户端库的人(不确定这是否是OP的意图),除非我使用
apikey
作为用户名,并使用api密钥本身作为密码,否则我无法让它工作


实现“如果您有office 365帐户”的一个好方法是


希望这对别人有帮助

我永远不会推荐SendGrid。我接受了他们提供的免费帐户,但从未发送过一封电子邮件——所有邮件都被阻止了——我花了几天时间试图解决它。当我问他们为什么被阻止时,他们告诉我免费帐户共享一个ip地址,如果任何帐户通过发送垃圾邮件滥用该ip,那么共享ip地址上的每个人都会被阻止,完全没有用。此外,如果您使用它们-不要将您的电子邮件密钥存储在git公共存储库中,因为任何人都可以从那里读取密钥(使用爬虫)并使用您的收费帐户发送批量电子邮件

我一直在Azure网站上使用的免费电子邮件服务是使用我的Gmail(谷歌邮件)帐户。该帐户有一个与应用程序一起使用的选项-一旦启用该选项,则可以从azure网站发送电子邮件。将示例发送代码粘贴为要使用的端口(587)并不明显

  public static void SendMail(MailMessage Message)
    {
        SmtpClient client = new SmtpClient();
        client.Host = EnvironmentSecret.Instance.SmtpHost; // smtp.googlemail.com
        client.Port = 587;
        client.UseDefaultCredentials = false;
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.EnableSsl = true;
        client.Credentials = new NetworkCredential(
            EnvironmentSecret.Instance.NetworkCredentialUserName,
            EnvironmentSecret.Instance.NetworkCredentialPassword);
        client.Send(Message);
    }

SendGrid是一个提供SMTP服务的第三方服务。是的,我理解,但可以让它与Azure一起工作,或者与MailChimp或Mandrill集成(两者都有一个NuGet包)。Azure的出站SMTP被明确禁止。请仔细阅读,解释大多数选项。正确,这意味着我需要一个SMTP服务提供商?Azure没有内置任何东西?第三部分方法是否适用于接收电子邮件?正确-Azure未启用SMTP。您必须使用三方发送。接收由你决定。您可以在您设置的任何域电子邮件服务接收电子邮件-Azure也不参与。你必须有DNS MX记录设置来处理通过GMail这样的提供商接收电子邮件的问题。这对我来说很有效,为SendGrid注册,并使用上面的smtp和我创建的登录名。唯一需要记住的是打开端口。当设置端口导致此错误时,“计费帐户上的市场与用户帐户上的市场不匹配”,下面是如何解决此问题的方法,我不能推荐SendGrid。建立一个帐户花了好几天时间。SendGrid不会验证我们的DNS记录。支持只有在重复请求后才能解决此问题,并建议禁用我们帐户的默认功能以绕过此问题。3个月后,由于与Azure的集成不可靠,我们不得不迁移到一个单独的帐户。此外,.net API令人困惑,在许多方面缺乏透明度。最后,今天是第三天,我们所有的电子邮件都被推迟,因为“我们的基础设施发生了变化,可能会限制您的一些电子邮件”。我们完全陷入泥潭了@BernardV,我同意,从
Azure
创建帐户对我来说也不是一次顺利的经历。然而,我使用了
SendGrid API
Azure调度程序作业
,它非常适合我。请参阅下面@viperguynaz的答案,就像使用第三方smtp一样使用它。工作起来很有魅力。一个月能收到3000封免费电子邮件,这一点我无法证实。我使用了Python中的STMP,配置>用户名下的用户名工作得很好。SSL端口是465。我使用Mailjet,比SMTP.com或SendGrid更喜欢它。它似乎在Azure中工作得非常快,没有问题。这对于企业帐户来说很棘手,因为最好使用一个专用帐户,同时还必须禁用MFA。因此,基本上,你不能使用你的个人分配的企业帐户,如果你得到了另一个仅仅为此创建的帐户,你还需要关闭MFA-一些环跳通过与您的IT部门。
  public static void SendMail(MailMessage Message)
    {
        SmtpClient client = new SmtpClient();
        client.Host = EnvironmentSecret.Instance.SmtpHost; // smtp.googlemail.com
        client.Port = 587;
        client.UseDefaultCredentials = false;
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.EnableSsl = true;
        client.Credentials = new NetworkCredential(
            EnvironmentSecret.Instance.NetworkCredentialUserName,
            EnvironmentSecret.Instance.NetworkCredentialPassword);
        client.Send(Message);
    }