Шаблон электронной почты SendGrid (API v3) не работает с C # MVC - PullRequest
0 голосов
/ 30 января 2019

В рамках процесса заказа я хочу отправить электронное письмо с подтверждением заказа.Для этого я использую SendGrid.Теперь все работало нормально, пока я не решил разработать шаблон SendGrid и заполнить его фактическими данными о заказе (например, позициями и т. Д.).

В результате я получил какой-то фрагмент кодаэто отсылает часть информации в шаблон, и электронное письмо отправляется (очевидно, с неверными данными), но я пытаюсь подчеркнуть, что я заставил его работать с точки зрения конфигурации.

Тем не менее, теперь, когда я, наконец, понял, как выяснить, как получить правильные данные в шаблон (код ниже), электронное письмо больше не отправляется (статус 3131).Любые идеи, где я могу разрушить вещь?

    var apiKey = ConfigurationManager.AppSettings["SGAPIkey"];
var client = new SendGridClient(apiKey);
var msg = new SendGridMessage();
msg.SetFrom(new EmailAddress("orders@freshNclean.ch", "freshNclean"));
msg.AddTo(new EmailAddress(UserManager.FindById(userID).Email));
msg.SetTemplateId("d-9f76f1ec08964219954067b31b3a97ad");

var orderedLineItems = DATADB.LineItemList.Where(x => x.OrderNumber == orderID).ToList();
var allLineItems = new List<orderConfirmation>();
string prd;
int qty;
decimal prc;
foreach(var itm in orderedLineItems)
{
    if (itm.SubscriptionQuantity == 0)
    {
        prd = itm.ProductName;
        qty = itm.SingleOrderQuantity;
        prc = itm.SingleOrderPrice;
    }
    else
    {
        prd = itm.ProductName;
        qty = itm.SubscriptionQuantity;
        prc = itm.SubscriptionPrice;
    }
    var bdy = new orderConfirmation
    {
        receipt = true,
        lineItem = new lineItem
        {
            product = prd,
            quantity = qty,
            price = 
        },
        total = "CHF " + order.OrderAmount.ToString(),
        company = DATADB.ShippingAddressList.Where(x => x.UserID == userID).Where(x => x.IsDefaultShippingAddress == true).Select(x => x.ShippingAddressCompanyName).First(),
        name = UserManager.FindById(userID).FirstName.ToString() + " " + UserManager.FindById(userID).LastName.ToString(),
        address01 = DATADB.ShippingAddressList.Where(x => x.UserID == userID).Where(x => x.IsDefaultShippingAddress == true).Select(x => x.ShippingAddressStreet).First() + " " + DATADB.ShippingAddressList.Where(x => x.UserID == userID).Where(x => x.IsDefaultShippingAddress == true).Select(x => x.ShippingAddressNumber).First(),
        address02 = DATADB.ShippingAddressList.Where(x => x.UserID == userID).Where(x => x.IsDefaultShippingAddress == true).Select(x => x.ShippingAddressAdditional).First(),
        zip = DATADB.ShippingAddressList.Where(x => x.UserID == userID).Where(x => x.IsDefaultShippingAddress == true).Select(x => x.ShippingAddressZIP).First(),
        city = DATADB.ShippingAddressList.Where(x => x.UserID == userID).Where(x => x.IsDefaultShippingAddress == true).Select(x => x.ShippingAddressCity).First(),
        state = DATADB.ShippingAddressList.Where(x => x.UserID == userID).Where(x => x.IsDefaultShippingAddress == true).Select(x => x.ShippingAddressState).First(),
        instructions = DATADB.ShippingAddressList.Where(x => x.UserID == userID).Where(x => x.IsDefaultShippingAddress == true).Select(x => x.ShippingInstructions).First()
    };
allLineItems.Add(bdy);
};
msg.SetTemplateData(allLineItems);
var response = await client.SendEmailAsync(msg);
...