繁体   English   中英

无法使用 SendGrid 将 html 文件作为附件发送

[英]Unable to send html file as attachment using SendGrid

我有一个代码,它将生成 HTML 内容并将其保存在如下位置

我还尝试通过手动复制 html 文本并尝试但没有运气,我收到了错误的请求,所以有人可以帮助我如何使用 SendGrid 将带框的 html 内容作为附件发送。 当我使用没有 SendGrid 的 smtp 客户端时,同样的代码可以工作

这是更新的代码,当我手动替换它时,我看到了一个属性checked=""它可以工作,但是通过代码我正在尝试它不是

public static void SendMail()
        {
            try
            {
                var apiKey = ""; //insert your Sendgrid API Key
                var client = new SendGridClient(apiKey);
                var from = new EmailAddress("abc@gmail.com");
                var tosList = new List<EmailAddress>();
                var ToEMailAddress = "abc@gmail.com";
                if (ToEMailAddress.Contains(";"))
                {
                    foreach (var address in ToEMailAddress.Split(';'))
                    {
                        tosList.Add(new EmailAddress(address));
                    }
                }
                else
                {
                    tosList.Add(new EmailAddress(ToEMailAddress));
                }
                var plainTextContent = string.Empty;
                var htmlContent = "Test Body";
                var subject = "Test Subje";
                var msg = MailHelper.CreateSingleEmailToMultipleRecipients(from, tosList, subject, plainTextContent, htmlContent);
                var fileName = "BmaReport_" + "_" + DateTime.Now.ToString("MMMddyyyyHHmmss") + ".html";
                string content = @"<!DOCTYPE html><html><head><style type='text/css'>table { font-family: Noto Sans;border-collapse: collapse;width: 100 %;} table td, table th { border: 1px solid #ddd;padding: 8px;}table tr:nth-child(even){background - color: #f2f2f2;} table tr:hover { background - color: #ddd;} table th { padding - top: 12px;padding - bottom: 12px;text - align: left;background - color: #04AA6D;color: white;}.togCheck { display: none; }.togContent { max-height: 0; opacity: 0;visibility: hidden;transition: max-height 1s;}.togCheck:checked + .togContent {max-height: 162vh; opacity: 1; visibility: visible;}{font-family: Noto Sans;box-sizing: border-box;}.togButton { display: block; width: 100 %;padding: 10px;color: #fff;background: #00778D;cursor: pointer;}.togContent { background: #fefefe00;}.togContent p { padding: 50px 10px;margin: 0;}</style></head><body style='font-family: Noto Sans'><br><br> Record of report submitted via BMA Reporting Portal at 01:54UTC on 19Aug2022<div style='height: 85px;width: 194px;float: right;margin-right: 2%;margin-top: -1%;background-image: url(https://stage-casualtyreporting.azurewebsites.net/Assets/logo-bma.svg);background-repeat: no-repeat;'></div><br><br> Record submitted to BMA<table><tr><td>Reportable Event : Loss of hull integrity</td></tr></table><br><br><h5 for='vesselDetail' class='togButton'>Principal Details</h5><input type='checkbox' checked="" class='togCheck' id='vesselDetail'><div class='togContent'><h5>Vessel and Voyage details</h5><table cellpadding='5' cellspacing='5'><tr><td> Vessel Name : Test loss</td><td> IMO No : 3333333</td><td> Vessel Type : Bulk carrier</td><td> Flag : Bahamas</td></tr><tr><td> No. of Crew on Board : 1</td><td> No. of Passengers : 0</td><td> No. of Supernumeraries : 0</td><td> Voyage From : Test loss</td></tr><tr><td> Voyage to/ Current port (if alongside) : Test loss</td><td> Cargo (if applicable) : </td></tr></table><h5>Reportable Event Details</h5><table cellpadding='5' cellspacing='5'><tr><td> Stage of Passage : Anchored</td><td>Date of Event : 08-01-2022</td></tr><tr><td> Latitude Degree : 33</td><td> Latitude Decimal : 33</td><td> Latitude Direction : N</td></tr><tr><td> Longitude Degree : 33</td><td> Longitude Decimal : 33</td><td> Longitude Direction : E</td><td>What was happening at the time of event (select all that apply) : Ballasting,Bunkering,</td></tr><tr><td>Time of Event (ship/local) : 03:33</td><td>Time Zone : +6</td></tr><tr><table><tr><td>Brief Description : Test loss</td></tr></table></tr></table><h5>Additional consequences of event</h5><table cellpadding='5' cellspacing='5'><tr><td>Injured Person(s) :No</td><td>Pollution :No</td><td>Missing Person : No</td><td>Fatality : No</td><td>Material Damage : No</td></tr></table></div><h5 for='envDetail' class='togButton'>Environment Details</h5><input type='checkbox' checked="" class='togCheck' id='envDetail'><div class='togContent'><table cellpadding='5' cellspacing='5'><tr><td> Weather : Overcast</td><td> Visibility : Poor (Vis 0.5&minus;2nm)</td><td> Light : Daylight</td></tr><tr><td> Wind Speed (Beaufort scale) : 1 (1&minus;3 knots)</td><td> Wind Direction : N</td><td> Sea State : Rippled (0–0.1m)</td></tr></table></div><h5 for='contDet' class='togButton'>Contact Details</h5><input type='checkbox' checked="" class='togCheck' id='contDet'><div class='togContent'><h5>DPA Contact Detail</h5><table cellpadding='5' cellspacing='5'><tr><td>Name : Test loss</td><td>DPA Email : abc.meka@gmail.com</td><td>DPA Phone No : 1234567890</td></tr></table><table><h5>Master's Contact Details</h5></table><table cellpadding='5' cellspacing='5'><tr><td>Name : Test loss</td><td>DPA Email : abc.meka@gmail.com</td><td>DPA Phone No : 1234567890</td></tr></table><h5>Person Completing Form</h5><table cellpadding='5' cellspacing='5'><tr><td>Name : Test loss</td><td>Role : DPA</td><td>Date : 08-02-2022</td><td>Email : abc.meka@gmail.com</td></tr></table></div></body></html>";
                content = content.Replace(@"checked=""", "checked=''");
                SendGrid.Helpers.Mail.Attachment attachment = new SendGrid.Helpers.Mail.Attachment
                {
                    Filename = fileName,
                    Type = "text/html",
                    //ContentId = "Banner",
                    Content = content,
                    Disposition = "attachment"
                };
                msg.Attachments = new List<SendGrid.Helpers.Mail.Attachment>
            {
                attachment
            };
                var result = Task.Run(() => client.SendEmailAsync(msg)).GetAwaiter().GetResult();
                if (result != null)
                {

                }
            }
            catch (Exception ex)
            {
                if (ex.Message != null)
                {

                }
            }
        }

此外,当成功处理 output 时,我也没有收到预期的结果

似乎我们需要根据文档将字符串转换为 base64 并发送。 我将它转换为 base64 并且它现在按预期工作

https://docs.sendgrid.com/api-reference/mail-send/mail-send

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM