c# - C# SMTP 在生产环境中发送带有空正文的电子邮件
问题描述
我正在处理一个需要向用户指定的电子邮件发送邀请电子邮件的项目。我正在使用 C#、SMTP 和正文是一个 html 模板。
如果我尝试,本地没有问题,我可以发送电子邮件并且一切都按预期工作,我会收到带有正确模板的电子邮件。
当我尝试从生产环境发送电子邮件时,问题就出现了,从那里收到的电子邮件是空的,没有正文模板的痕迹。
这是我用来发送电子邮件的代码。
MailMessage msg = new MailMessage(Configuration["EmailFrom"],to);
msg.Subject = subject;
msg.Body = this.emailBody;
msg.IsBodyHtml = true;
msg.BodyEncoding = System.Text.Encoding.UTF8;
SmtpClient smtpClient = new SmtpClient(Configuration["SMTP"], Convert.ToInt32(Configuration["PORT"]));
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(Configuration["EmailFrom"], Configuration["PasswordEmailFrom"]);
smtpClient.Credentials = credentials;
smtpClient.EnableSsl = true;
smtpClient.Send(msg);
现在,我知道生产环境托管在 AWS 服务器中,但不知道服务器的配置或它是否与问题有关。
在某些情况下,模板使用的是 div 而不是表格,但我认为这是一个不相关的问题,所以我真的不知道问题出在哪里。
编辑: 我从数据库中获取我将用来替换的信息,并从服务器中托管的本地 HTML 文件中获取模板。这是设置电子邮件模板并替换内容的代码:
EmailService sendDriverInvitation = new EmailService(_env);
sendDriverInvitation.setEmailTemplate($"ClientApp/{AssetsDirectory}/assets/emailTemplates/InvitationDriver.html");
sendDriverInvitation.emailBody = sendDriverInvitation.emailBody.Replace("[DER Name]", userName).Replace("[Company Name]", DbaName);
sendDriverInvitation.sendMail(email, "Invitation Email");
这是 setEmailTemplate 的代码:
HTMLReader reader = new HTMLReader();
string htmlCompleteTemplatePath = Path.Combine(webRoot, htmlTemplatePath);
this.emailBody = reader.ReadHtmlFile(htmlCompleteTemplatePath);
解决方案
推荐阅读
- jquery - 表单绑定:将模型更改为 FormModel
- flutter - 后台堆栈中的单个路由实例
- oracle - 将选择插入选择
- python - Excel的Python日期时间
- linux - 在下一行的空白区域下方的第一行中重复第一列的值
- php - AJAX 表单只执行一次(第一次输入)
- .net - Tizen .NET Visual Studio 无法调试
- java - 使用 Java 配置的 Setter 注入
- java - java.lang.UnsatisfiedLinkError:java.library.path 中没有 nlsxbe
- vba - 如何使用 VBA 修改 Powerpoint 图表标题文本