PDA

View Full Version : سوال: مشکل در ارسال ایمیل با ASP



davidrobert
جمعه 17 مهر 1394, 09:01 صبح
سلام دوستان من کد ارسال ایمیل رو نوشتم کدم این هستش if (Page.IsValid)
{
try
{
//میشه به جای خوراک از تکست باکس ها متن های بهتری ارسال کنید
//ایجاد یک بدنه با قالب برای ایمیل
//میتونید به اچ تی ام ال درست کنید
//این بدنه داخل ایمیل ادمین میاد
string strBody = string.Empty;

strBody += string.Format("<b>Full Name</b>: {0}<br />", txtFullName.Text);
strBody += string.Format("<b>E-Mail</b>: <a href='mailto:{0}'>{0}</a><br />", txtEmail.Text);
strBody += string.Format("<b>Subject</b>: {0}<br />", txtSubject.Text);
strBody += string.Format("<b>Description</b>: {0}<br />", txtDescription.Text.Replace("\n", "<br />"));

//در 5 جا که 3 تای اون پراپرتی میل مسیج هستند
//فرام -سندر - ریپلای تو -فرام وب کانفیگ و اکانت وب کانفیگ
//اگر یکسان باشد احتمال اینکه ایمیل شما
//وارد اسپام نشود زیادتره

//ایجاد یک شی از میل مسیج
System.Net.Mail.MailMessage oMailMessage =
new System.Net.Mail.MailMessage();

//فرام - سندر - میل آدرس
//هر سه پراپرتی میل مسیج از جنس میل آدرس هستند
//پس یک شی از میل آدرس ایجاد میکنیم
System.Net.Mail.MailAddress oMailAddress = null;

// کاملترین شکل ایجاد میل آدرس میل آدرس سه قسمت دارد
//ایمیل
//دیسپلی نیم
//یونی کد
oMailAddress =
new System.Net.Mail.MailAddress
(
"noReplay@cwx121.com",
"Auto Response Email Sender",
System.Text.Encoding.UTF8
);

//برای فرام - میل آدرس و سندر
//معمولا یک آدرس را انتخاب میکنیم
oMailMessage.From = oMailAddress;
oMailMessage.Sender = oMailAddress;



//آیتم های ذیل از جنس میل آدرس کالکشن هست
//چون گیرنده یکی هست گیرندگان بیشتر از یکی هستند
//چهار کالکشن ذیل بهتر است ابتدا کلیر شوند
//تو - سی سی - بی سی سی -ریپلای تو
//باید به میل آدرس اد شوند
oMailMessage.To.Clear();
oMailMessage.CC.Clear();
oMailMessage.Bcc.Clear();
oMailMessage.ReplyToList.Clear();
oMailMessage.Attachments.Clear();



oMailMessage.ReplyToList.Add(oMailAddress);

//میتونیم شخص یا اشخاص دیگری را به غیر از خودمون مشخص کنیم
//که ایمیل را دریافت کنند
//مثل خود شخصی که متن را ارسال نموده است
oMailAddress =
new System.Net.Mail.MailAddress
(
txtEmail.Text,
txtFullName.Text,
System.Text.Encoding.UTF8
);

//ما با تو این کار را انجام دادیم
oMailMessage.To.Add(oMailAddress);

//بادی را این کدینگ میکنیم
oMailMessage.BodyEncoding = System.Text.Encoding.UTF8;
oMailMessage.Body = strBody;

//سابجکت را یونی کد میکنیم
oMailMessage.SubjectEncoding = System.Text.Encoding.UTF8;


//یه پیشوند یا امضا قبل از سابجکت قرار میدهیم تا فیلترینگ
//ایمیل ها ساده شوند
oMailMessage.Subject =
"[-<Company Name>-] - " + txtSubject.Text;

//اگر تورو باشد و متن حاوی کد اچ تی ام ال باشد
//کد ترجمه شده و عمل کرده میبینید
oMailMessage.IsBodyHtml = true;

//اولویت ایمیل را مشخص میکنیم
oMailMessage.Priority =
System.Net.Mail.MailPriority.Normal;

//نحوه پیام دادن سیستم در مورد ایمیل ارسالی را مشخص میکنیم
//پنج حالت دارد که اگر ترکیب حالات مد نظر باشد باید دستو ذیل به تعداد نوشته و با هم اور شوند
oMailMessage.DeliveryNotificationOptions =
System.Net.Mail.DeliveryNotificationOptions.Never;


//با استفاده از تبدیل مسیر نسبی به فیزیکی
//پیوستی برای ایمیل در نظر میگیریم

//مسیر فیزیکی نسبت به روت
string strRootRelativePathName = "~/Attachments/Attachment.png";

//تبدیل مسیر نسبی به فیزیکی
string strPathName =
Server.MapPath(strRootRelativePathName);

if (System.IO.File.Exists(strPathName))
{
System.Net.Mail.Attachment oAttachment =
new System.Net.Mail.Attachment(strPathName);

oMailMessage.Attachments.Add(oAttachment);
}

//در محیط میل سرور های عمومی وقتی ایمیل ارسال میشود پروتکل اچ تی تی پی است
//اما در محیط خارجی
//اس ام تی پی برای ارسال و پاپ تری برای دریافت ایمیل است

//یک شی از اس ام تی پی ایجاد میکنیم
System.Net.Mail.SmtpClient oSmtpClient =
new System.Net.Mail.SmtpClient();

//تایم اوت پیش فرض یعنی صد ثانیه را برای ارسال ایمیل در نظر میگیریم
//زمان برقراری ارتباط است اگر بیشتر شود پیغام خطا داده میشود
oSmtpClient.Timeout = 100000;

//امضا الکترونیکی ایمیل را مشخص میکنیم
//سکیوت ساکت لایر -انتقال امن دیتا در جی میل که اولین ارائه کننده این سرویس است رایگان است
//اگر جی میل در نظر میگیرید حتما این گزینه را تورو قرار دهید
oSmtpClient.EnableSsl = false;

//شی میل مسیج را به متد سند شی اس ام تی پی میدیم
oSmtpClient.Send(oMailMessage);

string strInformationMessage =
".رایانامه شما با موفقيت، به مسوولين پايگاه ارسال گرديد";
divPageMessages.Visible = true;
litPageMessages.Text = strInformationMessage;

}
catch (System.Exception ex)
{
DisplayErrorMessage(ex.Message);
}
}
تمام کد ها اجرا میشه برای ارسال ایمیل ولی وقتی به این قسمت کد میرسه
oSmtpClient.Send(oMailMessage);
سیستم با خطا موجه میشه و ارسال ایمیل انجام نمیده.

hakim22
جمعه 17 مهر 1394, 12:41 عصر
به عنوان یک برنامه نویس هیچ وقت در مورد یک خطا به صورت کلی بحث نکنید. دقیقا مشخص کنید چه خطایی دریافت می کنید.

davidrobert
جمعه 17 مهر 1394, 20:25 عصر
این پیغام خطا رو میده
Bad sequence of commands. The server response was: This mail server requires authentication when attempting to send to a non-local e-mail address. Please check your mail client settings or contact your administrator to verify that the domain or address is defined for this server.

pbm_soy
جمعه 17 مهر 1394, 22:38 عصر
پیام خطا میگه که نمیتواند به سرور ایمیل وصل شود چون نیاز به نام کاربری و رمزعبور دارد که قید نکردید!
در کد شما که از smtp برای ارسال ایمیل استفاده کرده اید سرور smtp را مشخص نکردید یعنی از کدام سرور میخواهید ایمیل بفرستید
Smtp.gmail.com
Smtp.yourdomain.com
این آخری برای اینکه شما میتوانید از ایمیل سرور هاست خودتان هم استفاده کنید
پس مشخص کردن این مورد اکانت ایمیلی که میخواهید از آن ایمیل را بفرستید را باید مشخص کنید و همینطور رمزعبور آنرا نیز باید به smtpclient بدهید تا بتواند بدرستی به آن اکانت در آن سرور متصل شود و از طریق آن کار ارسال را انجام دهد

davidrobert
شنبه 18 مهر 1394, 17:12 عصر
تو app.config لحاظ شده این موارد ولی قبول نمیکنه.
<configuration>

<system.net>

<mailSettings>
<smtp deliveryMethod="Network" from="noReplay@cwx121.com">
<!-- Default Port is [25] -->
<!-- Specific Port for Gmail WithOut SSL [587]
Specific Port for Gmail With SSL [465]-->
<!-- Specific Port for Hotmail&Live With SSL [25]
Specific Port for Hotmail WithOutSSL [587]
Specific Port for Yahoo is [465]-->
<!-- defaultCredentials="false" یعنی مدیریت ارسال ایمیل با خود شماست-->

<network

defaultCredentials="false"

port="25"
host="smtp.cwx121.com"
password="123456789"
userName="noReplay@cwx121.com"
/>
</smtp>
</mailSettings>

</system.net>

<system.web>

<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />

</system.web>

</configuration>
باز خطا رو میده

marjan895
یک شنبه 26 مهر 1394, 07:43 صبح
سلام خسته نباشین من چند وقته درگیر سورس ارسال ایمیل هستم خطای زیر و میده :
An exception of type 'System.Net.Mail.SmtpException' occurred in System.dll but was not handled in user code


Additional information: Failure sending mail.
کدی که نوشتم اینه :
public ViewResult Index(SendMail0.Models.MailModel _objModelMail)
{
if(ModelState.IsValid)
{
MailMessage mail = new MailMessage();
mail.To.Add(_objModelMail.To);
mail.To.Add("marjankarimi895@gmail.com");
mail.From = new MailAddress("masoumehkarimi895@gmail.com");
mail.Subject = "subject";
string body = _objModelMail.Body;
mail.Body = body;
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient { EnableSsl = false };
smtp.Host = "smtp.gmail.com";
smtp.Port = 25;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new System.Net.NetworkCredential("Marjankarimi895", "8895441754");
smtp.EnableSsl = true;
smtp.Send(mail);
return View("Index", _objModelMail);
}
else {
return View();
}