我正面临发送电子邮件的问题。实际上,我正在尝试在邮件正文中发送包含更多文本和许多图像的电子邮件。我正在使用jquery和c#controller来完成这项工作。
以下代码更好地解释了一下:
在jquery中,我正在使用
$scope.SendEMailNew = function () {
var data = new FormData();
var ToEmail = $("#emailTo").val();
var CcEmail = $("#emailCc").val();
var Subject = $("#emailSubject").val();
var Message = document.getElementById(divID).outerHTML;
data.append("ToEmail", ToEmail);
data.append("CcEmail", CcEmail);
data.append("Subject", Subject);
data.append("Message", Message);
mailsendingIndicator();
$.ajax({
url: ApplicationUrl + 'SendEmail/MailSend',
type: "POST",
processData: false,
contentType: false,
data: data,
success: function (response) {
hidemailsendingIndicator();
toastr.clear();
toastr.success("Mail sent successfully", opts);
},
error: function (er) {
hidemailsendingIndicator();
toastr.clear();
toastr.error("Something went wrong", opts);
}
});
在c#mvc控制器中,我正在使用
[AcceptVerbs(HttpVerbs.Post)]
public void MailSend(SendEmail MailDetails)
{
string result = string.Empty;
string from = "FromMail@gmail.com";
using (MailMessage mail = new MailMessage(from,MailDetails.ToEmail))
{
mail.Subject = MailDetails.Subject;
mail.Body = MailDetails.Message;
mail.IsBodyHtml = true;
if (!string.IsNullOrEmpty(MailDetails.CcEmail))
mail.CC.Add(MailDetails.CcEmail);
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
NetworkCredential networkCredential = new NetworkCredential("FromMail@gmail.com", "Password");
smtp.UseDefaultCredentials = true;
smtp.Credentials = networkCredential;
smtp.Port = 587;
smtp.Send(mail);
}
}
在此代码之后,电子邮件可以与嵌入图像一起发送到我的官方邮件ID和我的客户端的邮件ID,但是gmail和outlook邮件,嵌入的图像不显示。
特别是在Outlook邮件中,我没有选择下载图像本身。在gmail中,我将图像作为基本64代码。实际上,图像作为字节存储在数据库中,并通过ajax调用检索到jquery。我长期面对这个问题。
这类问题的解决方案是什么?任何想法都会有很大的帮助
由于