#Адрес электронной почты
Вопрос:
я написал метод, как показано ниже, я получил ошибку, поскольку указанная строка не соответствует форме, требуемой для адреса электронной почты. пожалуйста, помогите мне
SendMail("xyz@gmail.com","hi","heloo");
public bool SendMail(string toMailAddress, string mailSubject, string mailMessage)
{
string smtphost ="smtp.gmail.com";
int smtpport = 100;
string smtpuser ="xyz";
string smtppwd = "xyz";
SmtpClient client = null;
string MessageBody = string.Empty;
try
{
message = new MailMessage();
message.From = new MailAddress(smtpuser);
message.To.Add(toMailAddress);
message.BodyEncoding = System.Text.Encoding.UTF8;
message.Subject = mailSubject;
message.Body = mailMessage.ToString();
message.IsBodyHtml = true;
client = new SmtpClient();
client.Host = smtphost;
client.Port = smtpport;
client.Credentials = new System.Net.NetworkCredential(smtpuser, smtppwd);
client.Send(message);
}
catch (Exception ex)
{
string x = ex.Message;
}
return true;
}
Комментарии:
1. в какой строке возникает ошибка?
2. Не могли бы вы распечатать переменную toMailAddress и посмотреть, правильный ли это адрес электронной почты?
3. Кроме того, вы выполняете эту строку smtpuser =»xyz»; и затем используете ее в качестве адреса электронной почты?
Ответ №1:
Ваш пользователь «от» должен быть в форме действительного адреса электронной почты.
message.From = new MailAddress(smtpuser);
Кроме того, вам нужно будет использовать конструктор MailAddress для .Также и в собственность.
Ответ №2:
Попробуйте, указав порт как 25 и значение isslenabled как true, поскольку на сервере gmail включен SSL
Ответ №3:
Убедитесь, что toMailAddress и smtpuser являются действительными адресами электронной почты. Попробуйте использовать smtpport = 587; предоставляется Gmail для исходящей почты (SMTP). Надеюсь, это заставит ее работать нормально. Пожалуйста, перечислите ошибки, с которыми вы сталкиваетесь.
Ответ №4:
Этот код будет работать. Что я сделал, так это
- правильный smtphost
- правильный smtpport — 587
- Включить SSL
- перед установкой учетных данных установите для UseDefaultCredentials значение false
- установить метод доставки
общедоступный статический bool SendMail(строка toMailAddress, строка mailSubject, строка MailMessage) { строка smtphost = "smtp.gmail.com "; int smtpport = 587; строка smtpuser = "youremail@gmail.com "; строка smtppwd = "пароль"; SmtpClient client = null; строка MessageBody = строка.Пусто; попробуйте { var message = новое почтовое сообщение(); Сообщение.From = новый почтовый адрес (smtpuser); Сообщение.Кому.Добавить (toMailAddress); Сообщение.BodyEncoding = System.Text.Encoding.UTF8; Сообщение.Тема = mailSubject; Сообщение.Тело = MailMessage.toString(); Сообщение.IsBodyHtml = true; клиент = новый SmtpClient(); клиент.Host = smtphost; клиент.EnableSsl = true; клиент.Порт = smtpport; клиент.UseDefaultCredentials = ложь; клиент.Метод доставки = SmtpDeliveryMethod.Сеть; клиент.Учетные данные = новая система.Net.NetworkCredential(smtpuser, smtppwd); клиент.Отправить (сообщение); } перехват (исключение ex) { строка x = ex.InnerException.Сообщение; Консоль.Строка записи (x); } возвращает true; }