从Azure发送电子邮件

7kqas0il  于 2023-08-07  发布在  其他
关注(0)|答案(7)|浏览(315)

希望有人能帮忙。我想从我的Azure帐户发送电子邮件。我的域名已配置为与Azure配合使用。
我在网上很难找到如何从Azure帐户发送电子邮件。有一些提到了SendGrid,但似乎我的帐户不支持它。
有人能指导我如何从Azure托管的网站发送电子邮件吗?

wyyhbhjk

wyyhbhjk1#

我知道这是一个老帖子,但我刚刚注册了Azure,我通过SendGrid每月免费收到25,000封电子邮件。这些指令非常好,我在几分钟内就启动并运行了:
How to Send Email Using SendGrid with Azure
Azure客户每月可以解锁25,000封免费电子邮件。

fykwrbwg

fykwrbwg2#

我永远不会推荐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);
    }

字符串
更新:Google不再允许您使用Google帐户名和密码发送电子邮件。相反,你现在需要打开双因素身份验证,并创建一个应用程序密码,并在你的应用程序中使用该密码与你的谷歌帐户。以下是一个分步指南:youtube.com/watch?v=Y_u5KIeXiVI

ktca8awb

ktca8awb3#

从第三方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")
{
    Credentials = new System.Net.NetworkCredential("YourSMTPServerUserName", "YourSMTPServerPassword")
};

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

字符串
更新:我在Medium上添加了一篇关于如何使用Azure函数https://medium.com/@viperguynaz/building-a-serverless-contact-form-f8f0bff46ba9的帖子

lbsnaicq

lbsnaicq4#

如果您有office 365帐户,则可以使用Office 365 outlook connector integrated with Azure Logic App
希望这对某人有帮助!

xienkqul

xienkqul5#

如果你正在寻找一些ESP的替代品,你也应该看看Mailjet for Microsoft Azure!作为全球电子邮件服务和基础设施提供商,他们使您能够通过他们的API,SMTP中继或UI发送,交付和跟踪交易和营销电子邮件,所有这些都来自一个单一的平台,为开发人员和电子邮件所有者考虑。

  • 免责声明:* 我在Mailjet工作,作为一个开发者布道者。
qyyhg6bp

qyyhg6bp6#

对于想要使用内置.NET SmtpClient而不是SendGrid客户端库的人(不确定这是否是OP的意图),我无法让它工作,除非我使用apikey作为我的用户名,并使用API密钥本身作为密码,如here所示。

<mailSettings>
    <smtp>
        <network host="smtp.sendgrid.net" port="587" userName="apikey" password="<your key goes here>" />
    </smtp>
</mailSettings>

字符串

9nvpjoqh

9nvpjoqh7#

对于任何在2022年阅读本文的人来说,微软现在已经在公共预览中提供了Azure通信服务,当与Azure电子邮件通信服务结合使用时,将允许通过SDK发送电子邮件的更好解决方案。
这里有一个快速入门指南,非常简单:
https://learn.microsoft.com/en-us/azure/communication-services/quickstarts/email/send-email?pivots=programming-language-csharp

EmailClient emailClient = new EmailClient(connectionString);
EmailContent emailContent = new EmailContent("Welcome to Azure 
Communication Service Email APIs.");
emailContent.PlainText = "This email message is sent from Azure Communication Service Email using .NET SDK.";
List<EmailAddress> emailAddresses = new List<EmailAddress> { new EmailAddress("emailalias@contoso.com") { DisplayName = "Friendly Display Name" }};
EmailRecipients emailRecipients = new EmailRecipients(emailAddresses);
EmailMessage emailMessage = new EmailMessage("donotreply@xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.azurecomm.net", emailContent, emailRecipients);
SendEmailResult emailResult = emailClient.Send(emailMessage,CancellationToken.None);

字符串
该服务还允许通过连接字符串和Azure AD进行身份验证。它还允许自定义域验证和发送。

相关问题