Я пытаюсь использовать разметку электронной почты от Google для отправки информации о мероприятиях и действиях в своих электронных письмах.
Я начал с этого учебника, и он отлично работает.
Затем я попытался отправить то же электронное письмо через приложение, которое я разработал на C# в Visual Studio. Письмо отправляется нормально, но разметки нет. Я отправляю электронное письмо со своего адреса электронной почты на свой адрес электронной почты, используя SMTP-сервер gmail, поэтому нет проблем, связанных с SPF и т. д.
Вот мой код:
reservation.html
<html>
<body>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "EventReservation",
"reservationNumber": "IO12345",
"underName": {
"@type": "Person",
"name": "John Smith"
},
"reservationStatus": "booked",
"reservationFor": {
"@type": "Event",
"name": "Google I/O 2013",
"startDate": "2017-09-09T08:30:00-08:00",
"location": {
"@type": "Place",
"name": "Moscone Center",
"address": {
"@type": "PostalAddress",
"streetAddress": "800 Howard St.",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94103",
"addressCountry": "US"
}
}
}
}
</script>
<p>
Dear John, thanks for booking your Google I/O ticket with us.
</p>
<p>
BOOKING DETAILS<br />
Reservation number: IO12345<br />
Order for: John Smith<br />
Event: Google I/O 2013<br />
Start time: May 15th 2013 8:00am PST<br />
Venue: Moscone Center, 800 Howard St., San Francisco, CA 94103<br />
</p>
</body>
</html>
Startup.cs
private static void sendemail(IApplicationBuilder app)
{
app.Run(async context =>
{
string message=context.Request.Form["message"];
Newtonsoft.Json.Linq.JObject messageJson = JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(message);
Newtonsoft.Json.Linq.JObject messageResult = new Newtonsoft.Json.Linq.JObject();
string email = messageJson["email"].ToString();
string subject = messageJson["subject"].ToString();
MailMessage emailmessage = new MailMessage();
emailmessage.From = new MailAddress(email);
emailmessage.To.Add(new MailAddress("[email protected]"));
emailmessage.Subject = subject;
string email_body = File.ReadAllText("reservation.html");
emailmessage.IsBodyHtml = true;
emailmessage.BodyEncoding = System.Text.Encoding.UTF8;
emailmessage.BodyTransferEncoding =System.Net.Mime.TransferEncoding.QuotedPrintable;
emailmessage.Body = email_body;
SmtpClient client = new SmtpClient();
client.Host=myConfiguration.GetSection("SmtpServer").Value;
client.Port = int.Parse(myConfiguration.GetSection("SmtpPort").Value);
client.Credentials = new NetworkCredential(myConfiguration.GetSection("Username").Value,myConfiguration.GetSection("Password").Value);
client.EnableSsl = true;
client.Send(emailmessage);
messageResult["SmtpServer"] = myConfiguration.GetSection("SmtpServer").Value;
context.Response.ContentType = "application/json";
await context.Response.WriteAsync(messageResult.ToString());
});
}
У меня сложилось впечатление, что проблема не в моем коде, которая препятствует добавлению события в электронное письмо, а в том, что Gmail блокирует его.
Я просмотрел другие сообщения, но они, к сожалению, не очень помогли.
У кого-нибудь была такая же проблема и удалось ее решить?