MailMessage发送带有空主题和附件的邮件

因此,我试图通过中继smtp发送带有html正文,主题和可选附件的电子邮件。发送工作无一例外,但是,发送的邮件最终以空主题结尾,没有附件,该附件应从与我的API和控制台应用程序托管在同一域中的Web应用程序的wwwroot文件夹中获取文件。该控制台应用将从任务计划程序中调用。该程序将我的API作为依赖项,因此它可以调用ProcessQueue任务。这是从我的控制台应用程序正确调用的。为了获取电子邮件的数据,代码将从MailQueue表检索数据,然后像这样填充邮件消息:

    public async Task ProcessQueue(int range,bool send)
    {
        SmtpClient client = new SmtpClient
        {
            Host = "outbound.domain",Port = 587,DeliveryMethod = SmtpDeliveryMethod.Network,UseDefaultCredentials = false,Credentials = new NetworkCredential("email@domain.com","")
        };

        var items = await _context.MailQueues.Take(range).ToListAsync();

        MailMessage message = new MailMessage();

        foreach (var item in items)
        {
            try
            {
                message.From = new mailaddress(item.From);
                message.Subject = item.Subject; // The subject is being filled correctly in my situation,but when the email arrives it isn't
                message.IsBodyHtml = true;
                message.To.Add(item.To);
                message.Body = item.Content;
                if (send)
                {
                    AddAttachments(message,item.Docs);
                    client.Send(message);
                    _context.MailQueues.Remove(item);
                    message.To.Clear();
                }
            }
            catch(Exception ex)
            {
                item.Exception = ex.ToString();
                _context.Entry(item).State = System.Data.Entity.EntityState.Modified;
            }
        }

附件方法:

    private void AddAttachments(MailMessage message,string docs)
    {
        if (docs != null)
        {
            List<string> list = JsonConvert.DeserializeObject<List<string>>(docs);
            foreach (string item2 in list)
            {
                Attachment item = new Attachment(HttpContext.Current.Server.MapPath("/wwwroot/documents/") + item2)
                {
                    Name = item2
                };
                message.Attachments.Add(item);
            }
        }
    }

我的域的结构:

domain.com> webapplicatie(包含我的Web应用及其wwwroot文件夹)

domain.com> webapi(包含我的web API)

domain.com>邮件队列(我的控制台应用程序的位置)

我的目标是发送带有可选附件的邮件,该附件位于Web应用程序的wwwroot文件夹及其主题中。 MailQueue对象的所有数据都已填充!但我仍然遇到这个问题。

有人知道解决方案吗?

chiichi 回答:MailMessage发送带有空主题和附件的邮件

我通过将MailQueue的数据库和smtp逻辑放入控制台应用程序解决了这个问题。我不完全知道为什么我的问题不起作用,但是我愿意回答和提出建议!

本文链接:https://www.f2er.com/3137408.html

大家都在问