如何将生成的PDF附加到.NET SMTP
本文关键字:NET SMTP PDF | 更新日期: 2023-09-27 18:23:52
我正在使用PDFsharp生成作业报告。我需要将该报告自动附加到传出的电子邮件中。现在,当用户以角度模式查看作业信息时,他们单击"电子邮件",生成报告,并显示一个带有电子邮件输入字段的新模式。如何设置电子邮件控制器以在JobSetupPdfs文件夹中找到正确的PDF?
Pdf控制器
public string Get(int id = 1)
{
JobDataAdapter adapter = new JobDataAdapter();
Job job = new Job();
job = adapter.GetJob(id);
if (job == null)
{
return string.Empty;
}
try
{
// Create a new PDF document
PdfDocument document = new PdfDocument();
document.Info.Title = "Created with PDFsharp";
gfx.DrawString("Texas Exterior Systems", HeadingFont, XBrushes.Black,
new XRect(0, 50, page.Width, page.Height),
XStringFormats.TopCenter);
gfx.DrawString("Job Setup Sheet", BodyFont, XBrushes.Black,
new XRect(0, 80, page.Width, page.Height),
XStringFormats.TopCenter);
var filename = string.Format(@"C:'Users'texas_000'Desktop'TexasExterior'TexasExterior'JobSetupPdfs'{0}.pdf", job.JobName);
document.Save(filename);
}
catch (Exception ex)
{
Debug.Print(ex.ToString());
}
return string.Empty;
}
邮件控制器
[Authorize]
public ActionResult EmailPdf( string To, string Cc, string comments, string Bcc, HttpPostedFileBase fileUploader)
{
try
{
SmtpClient client = new SmtpClient("mail.texasicecarving.com", 8889);
//client.EnableSsl = true;
client.Timeout = 100000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("postmaster@texasicecarving.com", "******");
MailMessage msg = new MailMessage();
if (fileUploader != null)
{
string fileName = Path.GetFileName(fileUploader.FileName);
msg.Attachments.Add(new Attachment(fileUploader.InputStream, fileName));
}
msg.To.Add(new MailAddress( "texas697@gmail.com"));
msg.From = new MailAddress("postmaster@texasicecarving.com");
// msg.Subject = name + " " + subject;
msg.Body = comments;
//MailAddress Ccopy = new MailAddress(user.Email);
//msg.CC.Add(Ccopy);
//MailAddress Bcopy = new MailAddress(Bcc);
//msg.Bcc.Add(Bcopy);
client.Send(msg);
Console.WriteLine("Successfully Sent Message.");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return View();
}
角度控制器
$scope.EmailPdf = function () {
$http.get('/api/Pdf/{id}').success(function () {
$scope.PrintPreviewModal();
});
}
更新好的,所以我用正确的路径设置了它。现在我该如何让它附加刚刚生成的PDF?我需要在PDF中添加一个时间戳并发送消息吗。附件是否附加该文件夹中的最新PDF?
msg.Attachments.Add(new Attachment(@"C:'Users'texas_000'Desktop'TexasExterior'TexasExterior'JobSetupPdfs'Restoration.pdf"));
您可以在邮件消息对象上使用附件集合。
msg.Attachments.Add(新附件(PathToAttachment));
查看MSDN的这篇文章以了解更多信息:http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.attachments.aspx