我正在尝试发送一封以电子邮件为附件的电子邮件。我可以发送一封电子邮件,它带有附件,但是当我尝试打开任何附件时,我在 Outlook 中收到以下消息。我认为这与电子邮件附件的编码有关
:
MailMessage mm1 = new MailMessage();
mm1.IsBodyHtml = true;
mm1.Body = "Body for person to approve";
mm1.Subject = "Home Owner's Insurance Policy";
mm1.From = new MailAddress("insurance@email.com", "SAHL");
mm1.ReplyTo = new MailAddress("insurance@email.com");
mm1.To.Add("ross.kriel@email.co.za");
foreach (NewBusinessData item in lData)
{
MailMessage mm = new MailMessage();
mm.IsBodyHtml = true;
mm.Body = HTMLBody;
mm.Subject = "Home Owner's Insurance Policy";
mm.From = new MailAddress("insurance@email.com", "SAHL");
mm.ReplyTo = new MailAddress("insurance@email.com");
byte[] thisAttachment;
thisAttachment = Common.Attach(Settings.Default.NewBusinessCSFDataFileWriterPath + item.PolicyNumber + "_" + item.MortgageLoanAccountNumber + ".pdf");
Stream ClientPDF = new MemoryStream(thisAttachment);
Attachment attStaticPDF = new Attachment(StaticPDF, "Home Owner's Insurance Policy.pdf");
Attachment attClientPDF = new Attachment(ClientPDF, item.PolicyNumber + ".pdf");
mm.Attachments.Add(attStaticPDF);
mm.Attachments.Add(attClientPDF);
Assembly assembly = typeof(SmtpClient).Assembly;
Type mailWriterType = assembly.GetType("System.Net.Mail.MailWriter");
MemoryStream stream = new MemoryStream();
ConstructorInfo mailWriterContructor = mailWriterType.GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, null, new[] { typeof(Stream) }, null);
object mailWriter = mailWriterContructor.Invoke(new object[] { stream });
MethodInfo sendMethod = typeof(MailMessage).GetMethod("Send", BindingFlags.Instance | BindingFlags.NonPublic);
sendMethod.Invoke(mm, BindingFlags.Instance | BindingFlags.NonPublic, null, new[] { mailWriter, true, true }, null);
stream.Position = 0;
Attachment emailAtt = new Attachment(stream, "Home Owner's Insurance Policy.msg");
mm1.Attachments.Add(emailAtt);
}
SmtpClient smtp1 = new SmtpClient();
smtp1.Host = "IPHost";
smtp1.Port = 25;
smtp1.UseDefaultCredentials = true;
smtp1.EnableSsl = false;
try
{
smtp1.Send(mm1);
}
catch (Exception exd)
{
Console.WriteLine(exd.ToString());
}