我正在开发需要将定期发票通过电子邮件发送给客户的asp.net MVC应用程序,我正在尝试使用quartz.net。我必须在每个月的某个日期通过电子邮件将发票作为附件发送给每个客户。我可以使用Quartz发送不带附件的电子邮件,但是当我添加附件时它不会发送,当我单击与电子邮件方法链接的按钮时,它的确会向带有发票附件的每个客户发送电子邮件。计划电子邮件存储在数据库中,使用Rotativa以PDF格式生成发票。这是我的代码:
public class Jobclass : IJob
{
public void Execute(IJobExecutionContext context)
{
InvoiceAddlinesController sche = new InvoiceAddlinesController();
sche.Recurring();
}
}
public void Recurring()
{
int originalId = 0;
string companyname = "";
int suc = 0;
string userloggedin = "";
string loggedemail = "";
string password = "";
string Subject = "";
string Message = "";
string bar = "";
string countDown = "";
int seconds = 10;
decimal? totalamount = 0;
var scheduling = from e in db.Invoices
where e.schedule == "Schedule"
select e;
var sched = scheduling.ToList();
foreach (var y in sched)
{
companyname = y.SchedCompanyname;
originalId = y.SchedCustomerId;
loggedemail = y.SchedLoggedemail;
password = y.SchedPassword;
userloggedin = y.SchedRt;
totalamount = y.SchedTotal;
Subject = y.SchedSubject;
Message = y.SchedMassage;
bar = loggedemail.ToString();
bar.Split(';');
using (var message = new MailMessage("myemail@gmail.com", bar))
{
var roata = from e in db.InvoiceAddlines
where e.AddlineID == originalId && e.userId == userloggedin
select e;
var roatainum = roata.ToList();
var model = roatainum;
message.Subject = "Message Subject test";
message.Body = "Message body test at " + DateTime.Now;
var pdf = new ViewAsPdf2("Gem", model, ViewBag.ind = originalId, TempData["user"] = userloggedin);
byte[] pdfByteArray = pdf.GetByte(ControllerContext);
message.IsBodyHtml = true;
MemoryStream file = new MemoryStream(pdfByteArray);
file.Seek(0, SeekOrigin.Begin);
Attachment data = new Attachment(file, "Invoice_Attachment.pdf", "application/pdf");
ContentDisposition disposition = data.ContentDisposition;
disposition.CreationDate = System.DateTime.Now;
disposition.ModificationDate = System.DateTime.Now;
disposition.DispositionType = DispositionTypeNames.Attachment;
message.Attachments.Add(data);
using (SmtpClient client = new SmtpClient
{
EnableSsl = true,
Host = "smtp.gmail.com",
Port = 587,
Credentials = new NetworkCredential("myemail@gmail.com", "@P#iop234")
})
{
client.Send(message);
}
}
}
}
我不知道我在做什么错。