У меня есть форма в веб-приложении MVC, размещенная на GoDaddy, которую пользователи могут заполнить и отправить в наш офис.В настоящее время я тестирую его, используя как учетную запись Gmail, так и учетную запись электронной почты GoDaddy (связана с моим хостингом).При наличии кода Gmail электронное письмо будет отправлено в порядке с моего локального хоста, но когда я публикую его в Интернете, я получаю следующую ошибку:
Запрос на разрешение типа 'System.Net.Mail.SmtpPermission, System, Version = 2.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089 'не удалось.
Вот код (заимствованный из этой записи ), которую я использую, учетные данные были изменены и пароль удален:
var fromAddress = new MailAddress("iihs.eval@gmail.com", "FEA Drone");
var toAddress = new MailAddress("improveithomeservices@gmail.com", "ImproveIt Home Services");
const string fromPassword = "<removed>";
var subject = string.Format("Energy Evaluation Request for {0} {1}", model.FirstName, model.LastName);
var body = MailBody(results);
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
Затем я попытался использовать адрес электронной почты GoDaddy, который я настроил для этой конкретной формы, и снова локально он отправляет.Однако, когда этот файл загружен, он просто останавливается, а не дает мне какую-либо полезную информацию.Вот этот код:
var fromAddress = new MailAddress("fea@goimproveit.com", "FEA Drone");
var toAddress = new MailAddress("improveithomeservices@gmail.com", "ImproveIt! Home Services");
const string fromPassword = "<removed>";
var client = new SmtpClient
{
Host = "relay-hosting.secureserver.net",
Port = 25,
EnableSsl = false,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Timeout = 20000,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var msg = new MailMessage(fromAddress, toAddress)
{
Subject = string.Format("Energy Evaluation Request for {0} {1}", model.FirstName, model.LastName),
IsBodyHtml = false,
Body = MailBody(results)
})
{
client.Send(msg);
}
Первоначально у меня был smtpout.secureserver.net
для моего GoDaddy Host, но я узнал из этой статьи , что мне нужно было изменить его на relay-hosting.secureserver.net
.С обновленной информацией о хосте скрипт запускается, но почтовое сообщение не попадает в почтовый ящик назначения (или ящик для спама).
Редактировать
Используя код Максима, кажется, я получил«функционирующая» версия на месте.Письмо не сразу появляется в папке «Входящие», но появляется примерно через 15 минут.Жаль, что кажется, что GoDaddy - гигантская PITA, когда дело доходит до программной электронной почты.
Вот что я получил:
var emailmessage = new System.Web.Mail.MailMessage()
{
Subject = subject,
Body = body,
From = fromAddress.Address,
To = toAddress.Address,
BodyFormat = MailFormat.Text,
Priority = System.Web.Mail.MailPriority.High
};
SmtpMail.SmtpServer = "relay-hosting.secureserver.net";
SmtpMail.Send(emailmessage);
Еще раз спасибо за помощь, я надеюсь, что смогу понятьо том, как заставить GoDaddy сотрудничать лучше.Если я могу, я отправлю обратно с обновлениями.