ورود

View Full Version : خطا در ارسال email : خطای The SMTP server requires a secure connection or the client was not



RIG000
دوشنبه 17 آذر 1393, 02:27 صبح
خطا در ارسال email
The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn more at در اینجا مثلا من همه خودم فرستنده ام هم گیرنده ....
اما انتهای کارex میده ...



try
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");


//نام فرستنده
mail.From = new MailAddress("RIGOOO@gmail.com");
//آدرس گیرنده یا گیرندگان
mail.To.Add("RIGOOO@gmail.com");
//عنوان ایمیل
mail.Subject = "لینک های قابل دانلود برای شما";
//بدنه ایمیل
mail.Body = "سلام از خرید شما متشکریم و شما می توانید از اینجا فایل ها را دانلود کنید"


;
mail.IsBodyHtml = true;
//مشخص کرن پورت
SmtpServer.Port = 587;

SmtpServer.Credentials = new System.Net.NetworkCredential("RIGOOO@gamil.com", "@RIGOOO");
SmtpServer.EnableSsl = true;


SmtpServer.Send(mail);


}
catch (Exception ex)
{
return null;
}

r4hgozar
دوشنبه 17 آذر 1393, 05:04 صبح
سلام مهندس سعادتی.

var mailMsg = new MailMessage();
mailMsg.BodyEncoding = Encoding.UTF8;
mailMsg.HeadersEncoding = Encoding.UTF8;
mailMsg.SubjectEncoding = Encoding.UTF8;
mailMsg.Priority = MailPriority.High;
mailMsg.Subject = subject;
mailMsg.Body = body;
mailMsg.IsBodyHtml = true;
mailMsg.From =new MailAddress("email@yahoo.com", "نام صاحب ایمیل", Encoding.UTF8);
mailMsg.Sender = new MailAddress("email@yahoo.com", "نام صاحب ایمیل", Encoding.UTF8)
mailMsg.To.Add(new MailAddress(mail));
var smtp = new SmtpClient("smtp.mail.yahoo.com", 587);
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential("email@yahoo.com", "123456");
smtp.Send(mailMsg);

RIG000
دوشنبه 17 آذر 1393, 10:29 صبح
این email@yahoo.com ها که نوشتی باید همین شکلی بمونه؟ اگه ایمیل مشتری gamil باشه باس میرسه؟

RIG000
دوشنبه 17 آذر 1393, 10:30 صبح
mailMsg.To.Add(new MailAddress(mail));
این mail رو از کجا اوردی؟

r4hgozar
دوشنبه 17 آذر 1393, 12:27 عصر
اون ایمیل ها ایمیل خودتونه
اگه جمیل باشه باید smtp عوض بشه و پورت

r4hgozar
دوشنبه 17 آذر 1393, 12:36 عصر
اونجا که email نام ایمیله.
البته من این رو واسه خودم به صورت extentsion در آوردم و واست اینجا میزارم.شما هم اینطوری استفاده کنی بهتره.





public static class MailSender
{
public static bool SendMail(string subject, string body, toMails)
{
try
{
var mailMsg = new MailMessage();
mailMsg.BodyEncoding = Encoding.UTF8;
mailMsg.HeadersEncoding = Encoding.UTF8;
mailMsg.SubjectEncoding = Encoding.UTF8;
mailMsg.Priority = MailPriority.High;
mailMsg.Subject = subject;
mailMsg.Body = body;
mailMsg.IsBodyHtml = true;
mailMsg.From = new MailAddress("nameemailet@yahoo.com", "نام فرستنده", Encoding.UTF8);
mailMsg.Sender = new MailAddress("nameemailet@yahoo.com", "نام فرستنده", Encoding.UTF8);

mailMsg.To.Add(new MailAddress(toMails)));

var smtp = new SmtpClient("smtp.mail.yahoo.com", 587);
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential("ایمیلت@yahoo.com", "پسورد");
smtp.Send(mailMsg);
return true;
}
catch
{
return false;
}
}

RIG000
دوشنبه 17 آذر 1393, 12:36 عصر
خب مشتری شاید با yahoo mail یا gamil mail و یا ... وارد شد .. من میخام در هر صورت این اطلاعاتی که میخام بفرستم به هر سرور mali ارسال بشه...وگرنه اینجوری اگه نباشه مجبورم برای سایت خودم یه جدول پیغام طراحی کنم و اطلاعات رو اونجا ادد کنم...

r4hgozar
دوشنبه 17 آذر 1393, 12:39 عصر
شما مقدار ایمیل رو اینجا به عنوان پارامتر ورودی گرفتی. که میشه toMails
این می تونه هر چی باشه.

kahkeshane2012
سه شنبه 18 آذر 1393, 22:42 عصر
و اما :


public class ContactModels
{
[Display(Name = "نام")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string DisplayName { get; set; }

[Display(Name = "فرستنده")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string emailFrom { get; set; }


[Display(Name = "موضوع")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string subject { get; set; }

[Display(Name = "محتوای ایمیل")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
[DataType(DataType.MultilineText)]
public string body { get; set; }
}




public ActionResult SendEmail(ContactModels contact)
{
string emailTo = "test@yahoo.com";
string emailPassword = "####";//password email your
System.Net.Mail.MailMessage oEmail = new MailMessage(
new System.Net.Mail.MailAddress(contact.emailFrom, contact.DisplayName),
new MailAddress(emailTo));


oEmail.Subject = contact.subject;
oEmail.Body = contact.body;// متن ایمیل
//امکان ارسال تگهای اچ تی ام ال فراهم شود
oEmail.IsBodyHtml = true;


System.Net.Mail.SmtpClient smtp = new SmtpClient("smtp.gmail.com");
smtp.Credentials = new System.Net.NetworkCredential(contact.emailFrom, emailPassword);


smtp.EnableSsl = true;
smtp.Port = 587;
smtp.Send(oEmail);


ViewBag.info = " ایمیل شما با موفقیت ارسال شد؛ با تشکر مدیر سایت.";
ViewBag.color = "alert-success";


ModelState.Clear();
return View();
}


لازم به ذکره که این سورس کد را میشه به صورت کاملتر هم تکمیل کرد و به آن قسمت ضمیمه فایل... هم اضافه کرد؛ و یا برخی از قسمت ها رو در وب کانفیگ تنظیم کرد (از جمله port..... ) و همچنین دو نکته راجع به نحوه ی درست استفاده از کدینگ و Priority اینجا (http://www.dotnettips.info/post/1489/%D8%B1%D8%A7%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C-%DA%A9%D9%85-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A7%D8%AD%D8%AA%D9%85%D8%A7%D9%84-%D8%A7%D8%B3%D9%BE%D9%85-%D8%B4%D8%AF%D9%86-%D8%A7%DB%8C%D9%85%DB%8C%D9%84%E2%80%8C%D9%87%D8%A 7%DB%8C-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84%DB%8C-%D8%AA%D9%88%D8%B3%D8%B7-smtp-client) گفته دوست داشتید ببینید.
موفق باشید.