PDA

View Full Version : آیا در ارسال email مشکل دارید؟



titbasoft
جمعه 08 مهر 1384, 18:38 عصر
بسیاری از سرورهای کنونی برای ارسال email نیاز به SMTP Authentication دارند. این همون علتی است که بسیاری از کسانی که سعی در فرستادن ایمیل از طریق asp.net میکنند اگر مقصد روی سرور دیگری باشد آن email با مشکل مواجه می شه. حالا این سوال پیش میاد که چطوری میشه این مشکل رو حل کرد. جواب خیلی ساده است. تنها با اضافه کردن کد زیر این مشکل حل خواهد شد:


MailMessage msg = new MailMessage();
msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", smtpServer);
msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 25) ;
msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", cdoSendUsingPort) ;
msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", cdoBasic);
msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", userName);
msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", password);

username و password همان account ایمیل شما در نظر گرفته خواهد شد . بقیه تنظیمات هم که مشخصه. فقط گاهی اوقات (خیلی به ندرت) ممکنه port مربوطه هم فرق داشته باشه که اون رو هم باید از mail server تون درخواست کنید.

Behrouz_Rad
جمعه 08 مهر 1384, 21:51 عصر
پ.ن: فایل Interop.CDO.dll را نیز به عنوان Reference برنامه در پوشه ی Bin کپی کنید. Search About It

JikSearch
شنبه 30 مهر 1384, 13:32 عصر
فایل Interop.CDO.dll از کجا تهیه کنیم؟ من توی کامپیوترم Search کردم نبود.
تشکر

M.GhanaatPisheh
شنبه 30 مهر 1384, 14:10 عصر
http://forums.aspfree.com/archive/t-55932/Windows-app-and-email

EhsanKhafan
یک شنبه 08 آبان 1384, 14:09 عصر
با تشکر از titbasoft
یک سوال cdoSendUsingPort و cdoBasic چیه؟
ممنون

manager
دوشنبه 16 آبان 1384, 13:35 عصر
با سلام

آقا ما مردیم نتونستیم یه میل ارسال کنیم من نمی دونم چرا برنامه نویسان PHP مشکل smtpServer ندارن اما ASP یا ASP.net همیشه این مشکل رو داشته ؟ :عصبانی:
لطفا مشکل منو حل کنید. (شاید هم من اشتباه می کنم !) :افسرده:

mehrdotnet
دوشنبه 16 آبان 1384, 20:03 عصر
اگه اساتید محترم لطف کنن و یه مثال بذارن خیلی عالیه !!! لطفاً اگه ممکنه...

Behrouz_Rad
سه شنبه 17 آبان 1384, 06:19 صبح
ابتدا باید فایل های cdosys.dll و adodb.dll را در پوشه ی bin کپی کنید.
این فایل ها رو می تونید از سایت www.dlldump.com داونلود کنید.
پس از اضافه کردن این فایل ها به صورت Reference به برنامه، نیاز به کمی کدنویسی دارید:


Dim cdoSendUsingMethod As String = "http://schemas.microsoft.com/cdo/configuration/sendusing"
Dim cdoSMTPServerPickUpDirecory As String = "http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory"
Dim cdoSMTPServer As String = "http://schemas.microsoft.com/cdo/configuration/smtpserver"
Dim cdoSMTPServerPort As String = "http://schemas.microsoft.com/cdo/configuration/smtpserverport"
Dim cdoSMTPConnectionTimeout As String = "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"
Dim cdoSMTPAuthenticate As String = "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"
Dim cdoSendUserName As String = "http://schemas.microsoft.com/cdo/configuration/sendusername"
Dim cdoSendPassword = "http://schemas.microsoft.com/cdo/configuration/sendpassword"

Dim objMM As CDO.Message = New CDO.Message
Dim Flds As ADODB.Fields = objMM.Configuration.Fields

Flds(cdoSendUsingMethod).Value = CDO.CdoSendUsing.cdoSendUsingPort
Flds(cdoSMTPAuthenticate).Value = CDO.CdoProtocolsAuthentication.cdoBasic
Flds(cdoSMTPServer).Value = "localhost"

Flds.Update()
objMM.MimeFormatted = True

objMM.From = "info@yektadev.com"
objMM.To = "behrouz.rad@gmail.com"

objMM.Subject = "Welcome!"
objMM.HTMLBody = "<HTML><HEAD></HEAD><BODY><b>Welcome To My WebSite!</b></BODY></HTML>"

objMM.Send()

البته در کد فوق، از تمامی ثبات های تعریف شده استفاده نشده چون نیازی نبوده.
در صورتی که سرویس ارسال ایمیل هاست شما جهت ارسال ایمیل به username و password نیاز داشت، ثبات های cdoSendUserName و cdoSendPassword نیز باید مقداردهی شوند.
توجه: فایل Interop.CDO.dll، احتمالا به صورت خودکار در پوشه ی bin ایجاد خواهد شد.
موفق باشید.

EhsanKhafan
پنج شنبه 03 آذر 1384, 06:24 صبح
سلام
منم بعد از کلی تلاش تونستم ایمیل رو ارسال کنم(آخه معمولا ناقص بیان میشه) با تشکر از آقا بهروز که خیلی کمک کردن تو وبلاگم سورس نهایی برای ارسال ایمیل (+لاگین کردن به میل سرور) رو گذاشتم 100% کار میکنه:

http://notvoid.persianblog.com/

mostafa612003
سه شنبه 08 آذر 1384, 10:17 صبح
سلام
می شود به صورت asp هم این کد را بنویسید

rohollahmahmoodiany
جمعه 11 آذر 1384, 01:13 صبح
من از smtpserver برای ارسال ایمیل استفاده میکنم .ایا نیازی به اضافه کردن کدهایی که titbasoft گفت دارم.اگر نه کد زیر چه مشکلی دارد.
MailMessage smtpMssg =new MailMessage ();

smtpMssg.To = "rohollahmahmoodiany@yahoo.com";
smtpMssg.From = "a@yahoo.com" ;
smtpMssg.Subject = "Message from friend" ;
smtpMssg .BodyFormat=MailFormat.Text;
smtpMssg.Body = "Hello Dude";
smtpMssg .Priority=MailPriority.Normal;


SmtpMail.SmtpServer = "mail.abadancity.net";
SmtpMail.Send(smtpMssg );
یا خطا میدهد که رشته ها را اشتباه به کار بردهاید یا میگوید که reject شده است یا.....ایا ممکن است به خاطر نداشتن اکسس به میل سرور باشد ؟چگونه میتوانم این مورد را تست کنم.؟
باتشکر

titbasoft
جمعه 11 آذر 1384, 09:22 صبح
اگر mail server شما نیاز به smtp authentication داشته باشه باید از کد های ذکر شده استفاده کنید

mostafa612003
شنبه 12 آذر 1384, 08:08 صبح
لطفا یک نفر جواب بدهد

mostafa612003
دوشنبه 21 آذر 1384, 11:12 صبح
سلام
می شود به صورت asp هم این کد را بنویسید

hassan_RK
پنج شنبه 27 بهمن 1384, 16:57 عصر
با سلام خدمت آقای راد
بعد از کپی فایلهای ذکر شده در پوشه bin و اضافه کردن فایلها از references عینا کد زیر را کپی کردم که در خطی که علامت سئوال گذاشتم ( ADODB.Fields ) خطا می دهد . لطفا راهنمایی بفرمائید.



Dim cdoSendUsingMethod As String = "http://schemas.microsoft.com/cdo/configuration/sendusing"
Dim cdoSMTPServerPickUpDirecory As String = "http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory"
Dim cdoSMTPServer As String = "http://schemas.microsoft.com/cdo/configuration/smtpserver"
Dim cdoSMTPServerPort As String = "http://schemas.microsoft.com/cdo/configuration/smtpserverport"
Dim cdoSMTPConnectionTimeout As String = "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"
Dim cdoSMTPAuthenticate As String = "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"
Dim cdoSendUserName As String = "http://schemas.microsoft.com/cdo/configuration/sendusername"
Dim cdoSendPassword = "http://schemas.microsoft.com/cdo/configuration/sendpassword"

Dim objMM As CDO.Message = New CDO.Message
Dim Flds As ADODB.Fields = objMM.Configuration.Fields ???????????????

Flds(cdoSendUsingMethod).Value = CDO.CdoSendUsing.cdoSendUsingPort
Flds(cdoSMTPAuthenticate).Value = CDO.CdoProtocolsAuthentication.cdoBasic
Flds(cdoSMTPServer).Value = "localhost"

Flds.Update()
objMM.MimeFormatted = True

objMM.From = "info@yektadev.com"
objMM.To = "behrouz.rad@gmail.com"

objMM.Subject = "Welcome!"
objMM.HTMLBody = "<HTML><HEAD></HEAD><BODY><b>Welcome To My WebSite!</b></BODY></HTML>"

objMM.Send()

Behrouz_Rad
پنج شنبه 27 بهمن 1384, 22:52 عصر
adodb.dll و cdosys.dll و Interop.CDO.dll
البته همه ی سایت ها نیاز به این روش ندارند و به با استفاده از کلاس MailMessage نیز به خوبی کار خواهند کرد.
برخی کدها نیز باید در تعیین Smtp خود به شکل زیر عمل کنند:


SmtpMail.SmtpServer.Insert(0, "localhost")

تجره به بنده ثابت کرده که بهترین روش برای آگاهی از نحوه ی ارسال E_Mail، تماس با تیم ساپورت هاست و تقاضای راهنمایی از آنهاست.

موفق باشید.

md_bluelily
شنبه 19 فروردین 1385, 14:40 عصر
آقا یه مشکل جالب.
من یه صفحه فرستادن اطلاعات دارم که وقتی از داخل اون به Yahoo میل میفرستم، میل به inbox من در yahoo میرسه، که این منطقی هست و یعنی داره درست کار میکنه.
ولی وقتی به آدرس خودم در Mail.com یا Gmail میفرستم، میل نمیرسه و هیچ خطایی هم گرفته نمی شه.

آیا کسی راه حلی داره ؟؟؟؟

ممنون.

md_bluelily
شنبه 19 فروردین 1385, 15:01 عصر
آقا درست شد.

rezaei manesh
دوشنبه 12 تیر 1385, 09:37 صبح
سلام
من هم مشکل آقای hassan_RK رو دارم سر این خط خطا می ده؟!
Dim Flds As ADODB.Fields = objMM.Configuration.Fields
تویه msdn هم جستجو می کنم مباحث مربوط به access رو میاره؟

در ضمن من چطوری بعد از برطرف شدن این خطا چک کنم که برنامه درست کار می کنه می شه بدون آپلود سایت این قسمت رو چک کرد.
من الان متوجه شدم که cdosys ظاهرا برای ویندوز NT نیست؟!!
ویندوز من xp sp2هستش و با vb2003 کار می کنم ، من باید چکار کنم یکی کمک کنه لطفا

Zarghami_A
چهارشنبه 14 تیر 1385, 08:31 صبح
اگر دوستان لطف کنند این کدها را برای vs 2005 و زبان #C برای همه کاربران قرار بدهند

nazaninam
پنج شنبه 15 تیر 1385, 12:27 عصر
برای ارسال میل در دات نت 2 قبل از هر کاری فضا نام System.Net.Mail را اضافه کنید
این یک تابع هست که میتونید با صدا زدنش راحت ایمیل ارسال کنید
فکر کنم واضح باشه البته برای بعضی قسمتاش توضیح نوشتم
-------------------------------------------VB.NET-------------------------------------------------
کد ها برای زبان وی بی :



Public Sub sendmail(ByVal subject As String, ByVal mailto As String, ByVal htmltext As String, ByVal mfrom As String, ByVal mailserver As String, ByVal pass As String)

Dim obj As New SmtpClient
Dim Mailmsg As New MailMessage
Mailmsg.To.Clear()

Mailmsg.To.Add(New MailAddress(mailto))
Mailmsg.From = New MailAddress(mfrom)
Mailmsg.Subject = subject
Mailmsg.BodyEncoding = System.Text.Encoding.UTF8 ' تعیین کدینگ متن بادی
Mailmsg.IsBodyHtml = True
obj.Host = mailserver 'جواب میده mai.yoursite.com خود که معمولا smtp server تعیین
Dim basicAuthenticationInfo As New System.Net.NetworkCredential(mfrom, pass) ' رو انجام میده پس یوزر نیم و پسورد رو وارد میکنیم Authenticate این بخش کار

obj.UseDefaultCredentials = False

obj.Credentials = basicAuthenticationInfo

Mailmsg.Body = htmltext ' این در حقیقت متن بادی است که شما میخواهید بفرستید
Mailmsg.IsBodyHtml = True ' است و متن ساده نیست html تعیین میکند که بادی شما از نوع
Try
obj.Send(Mailmsg)
Catch ex As Exception

End Try

End Sub



-------------------------------------------#C-------------------------------------------------



public void sendmail(string subject, string mailto, string htmltext, string mfrom, string mailserver, string pass)
{
SmtpClient obj = new SmtpClient();
MailMessage Mailmsg = new MailMessage();
Mailmsg.To.Clear();
Mailmsg.To.Add(new MailAddress(mailto));
Mailmsg.From = new MailAddress(mfrom);
Mailmsg.Subject = subject;
Mailmsg.BodyEncoding = System.Text.Encoding.UTF8;
Mailmsg.IsBodyHtml = true;
obj.Host = mailserver;
System.Net.NetworkCredential basicAuthenticationInfo = new System.Net.NetworkCredential(mfrom, pass);
obj.UseDefaultCredentials = false;
obj.Credentials = basicAuthenticationInfo;
Mailmsg.Body = htmltext;
Mailmsg.IsBodyHtml = true;
try
{
obj.Send(Mailmsg);
}
catch (Exception ex)

{
Response.Write(ex.Message);
}
}

abbas123123
یک شنبه 23 مرداد 1390, 11:20 صبح
سلام.میشه یکی از اساتید کمک کنه و بگه چطوری میتونم به زبون سی شارپ ارسال و دریافت جمیل رو داشته باشم؟ اگه سورس کد اماده داشته باشین و بذارین خیلی ممنون میشم.

Saman Hashemi
یک شنبه 23 مرداد 1390, 11:46 صبح
به اينجا (http://www.codeproject.com/KB/aspnet/SMTPGmail.aspx)مراجعه كنيد...!