Настройвам Mandrill API за нашите вътрешни системи.
Мога да накарам API да работи добре и мога да получавам имейлите от него, проблемът, който имам, е, че когато се опитам да получа резултата от заявката за изпращане, системата просто виси за неопределено време.
Моят код е както следва:
public async Task<bool> SendEmail(MandrillSendTemplateRequest request)
{
var result = await _mandrill.SendMessageTemplate(Map(request));
return result[0].Status.ToString() == "sent";
}
Ако стартирам горния код БЕЗ връщане, тогава имейлът се изпраща добре. Ако стартирам горния код С връщането, тогава имейлът се изпраща добре, но програмата ми просто увисва.
Може ли някой да хвърли светлина върху този въпрос?
Редактиране. За справка използвам Mandrill .Net Wrapper от Shawn Mclean от NuGet Packages. Mandrill API 2.2.7
Редактиране. Събитие за щракване върху бутон, което извиква метода SendEmail:
Private Sub btnTest_Click(sender As Object, e As EventArgs) Handles btnTest.Click
Try
WaitCursor = True
Dim mgr As New CustomerCommunicationsManager()
Dim r As New MandrillSendTemplateRequest()
Dim m As New MandrillMessage()
m.FromEmail = "[email protected]"
m.FromName = "fromName"
m.Subject = "Test"
m.ForeName = "Software"
m.Surname = "Dept"
m.EmailAddress = "[email protected]"
r.Message = m
r.TemplateName = "WelcomeBasic"
Dim sent As Boolean = mgr.Mandrill.SendEmail(r).Result
Catch ex As Exception
Finally
WaitCursor = False
End Try
End Sub
Редактиране. Код за Map(request) (метод SendEmail)
private SendMessageTemplateRequest Map(MandrillSendTemplateRequest obj)
{
if (obj == null) { return null; }
return new SendMessageTemplateRequest(Map(obj.Message), obj.TemplateName, Map(obj.TemplateContent));
}
private EmailMessage Map(MandrillMessage obj)
{
if (obj == null) { return null; }
return new EmailMessage
{
AutoHtml = obj.AutoHtml,
AutoText = obj.AutoText,
FromEmail = obj.FromEmail,
FromName = obj.FromName,
Important = obj.Important,
PreserveRecipients = obj.PreserveRecipients,
Subject = obj.Subject,
Tags = obj.tags,
To = new EmailAddress[] { new EmailAddress(obj.EmailAddress, obj.FullName) },
TrackOpens = obj.TrackOpens,
TrackClicks = obj.TrackClicks
};
}
private IEnumerable<TemplateContent> Map(IEnumerable<MandrillTemplateContent> obj)
{
if (obj == null) { return null; }
List<TemplateContent> content = new List<TemplateContent>();
foreach (MandrillTemplateContent c in obj)
{
content.Add(new TemplateContent{ Content = c.Content, Name = c.Name });
}
return content;
}
Wait
илиResult
при върнатата задача? - person Daniel Kelley   schedule 16.11.2015SendMail
? Какво нарича това? - person Daniel Kelley   schedule 16.11.2015result
, инструментът за получаване наStatus
или методътToString()
виси. Отстранявали ли сте грешки с помощта на step into? опитайте да поставите точки на прекъсване в индексатора/аксесора/tostring - person Philippe Paré   schedule 16.11.2015SendEmail
- person i3arnon   schedule 16.11.2015