سلام
دوستان من مقاله جناب خالدیان به صورت PDF در این آدرس قرار دادم اگه دوست داشتین دانلود کنین
امیدوارم بدرد بخوره
ارسال ایمیل در دات نت 2.0
سلام
دوستان من مقاله جناب خالدیان به صورت PDF در این آدرس قرار دادم اگه دوست داشتین دانلود کنین
امیدوارم بدرد بخوره
ارسال ایمیل در دات نت 2.0
من از اين کد براي ارسال ايميل استفاده مي کنم ولي خطا ميده
خيلي وقته درگيرشم ممنون ميشم کمکم کنيد
System.Net.Mail.MailMessage Msg = new System.Net.Mail.MailMessage();
Msg.From = new System.Net.Mail.MailAddress(EmailTextBox.Tex t);
Msg.To.Add("info@domain.ir");
Msg.Subject = subjectTextBox.Text;
Msg.Body =bodyTextBox.Text;
// Msg.IsBodyHtml = true;
System.Net.Mail.SmtpClient SC = new System.Net.Mail.SmtpClient("smtp.domain.ir") ;
SC.Send(Msg);
خطا:
Failure sending mail.
پس user و pass کو؟
smtp.Credentials = New Net.NetworkCredential ("username", "secret")اگه توی web.config نوشتی که هیچی.
دوستان بنده در کد
smtp.Credentials = new NetworkCredential("username", "secret")
مشگل دارم وقلی می خوام قسمت NetworkCredential را بزنم اصلا همچین کدی در آن ذخیره نشده و پیام خطا میده
ممنون میشم کمکم کنید
سلام
babi_wd عزیز لطف می کنید قسمت Attachment رو برای من بطور کامل حتی با نام یک سرور میل داخلش بگذارین. یه طوریکه واقعاً بشه بدون هیچ تغییری در کد با این کد ایمیل فرستاد.
بهش نیاز فوری دارم ولی هر کدی رو نوشتم جواب نمیده.
با تشکر فراوان از شما...
با سلام و ضمن تشکر از دوستان سوالی داشتم
می خوام کاربران ایمیل در سایتم بتونن اکانت ایجاد کنن ! یعنی به کدی نیاز دارم که با میل سرور ارتباط برقرار کنه و اکانت جدید ایجاد کنه. با این توضیح که از hmailServer استفاده میکنم.
قبلاً از همکاری دوستان سپاسگذارم.
سلام دوستان عزیز
کد مربوط به دریافت ایمیل در asp.net رو کسی داره؟؟؟
كسي نيست؟؟؟
چند تا سوال
smtp آیا ip ای که از طریق هاست بهش می رسیم
این جوری فهمیدم که user و pass خودمونو باید بهش بدیم آخه پسورد خودمونو چرا؟؟ غیر منطقیه
میل من رو yahoo فرقی نمی کنه smtp مال yahoo باشه یا gmail ( yahoo:smtp.yahoo.comاست ؟؟؟
ولی آخه من مقاله رو که خوندم این جوری متوجه شدم که بستکی به هاستی داره که ازش استفاده می کنی و دوستمون راهحل هم برای رسیدن به اون ip ارائه داده بود ؟؟؟
بابت پسورد منظورم اینه که پسورد میل خودم رو بهش بدم یا این پسورد مربوط به یه چیز دیگه میشه ؟؟
با تشکر فراوان
دوست عزیز شما روی میل سرور خودت یه ایمیل میسازی مثلا info@yoursite.com , کلمه عبور شما هم میدین 12345
حالا فقط کافیه واسه یوزر و پسورد اونهاو وارد کنین + نام میل سرور شما یا ادرس ip مربوطه
موفق باشید
ضمن سلام و تشکر از شما دوست عزیزبا تنظیم یک باره آنها در Web.Config از تنظیم این ویژگی ها در قسمت های مختلف جلوگیری خواهد شد
کد:
<configuration> <system.net> <mailSettings> <smtp from="Me@MyCompany.com"> <network host="Your Smtp Server" port="25" userName="send@MyCompany.com" password="PWd1"defaultCredentials="false" /> </smtp> </mailSettings> </system.net> <connectionStrings/> <system.web></configuration>
نکته قابل توجه در مورد defaultCredentials میباشد که اگر مقدار true داشته باشد userNameو passwordدر نظر گرفته نمیشوند
میشه لطفاً بگید بعد از ذخیره کردن این اطلاعات در فایل Web.Config چطور اونو فراخونی کنیم ؟
ممنون
گلم خودش اتوماتیک ازینا میخونه
عزیز توی کدوم صفحه؟ لطفا واضحتر بگو تا واست توضیحات کافی بدم
توی صفحه محتوا
این قسمت
Dim smtp As New SmtpClient()
Dim perm As New System.Net.NetworkCredential("Username", "password")
smtp.Credentials = perm
smtp.Send(msg)
این قسمت
Dim smtp As New SmtpClient()
باید آدرس میل سرور نوشته بشه
و بجای Username و Password هم اطلاعات مورد نیاز
من اینارو توی وب کانفیگ گذاشتم . حالا می خوام برنامه این اطلاعات رو از اونجا بخونه . می خواستم ببینم اینا رو چطوری تغییر بدم
بازم ممنون
موفق باشید
سلام دوست من اگه این دو خط
Dim perm As New System.Net.NetworkCredential("Username", "password")
smtp.Credentials = perm
ننویسی خودش اتوماتیک تنظیمات وب کانفیگ می خونه
موفق باشی
ازتون بابت مقاله كاملتون ممنونم
يه سوال داشتم براي اينكه ايميل ارسالي حتما وارد اينباكس بشه كسي راه حلي نداره؟؟؟
سلام
خواهش میکنم کمک کنید
خیلی وقته که درگیر این موضوعم و وقتم هم داره تموم میشه
من از این کد برای ارسال ایمیل استفاده میکنم
try
{
MailMessage oMailMessage = new MailMessage();
oMailMessage.IsBodyHtml = true;
oMailMessage.Priority = MailPriority.Normal;
oMailMessage.DeliveryNotificationOptions = DeliveryNotificationOptions.Never;
MailAddress oMailAddress = null;
System.Text.Encoding.UTF8);
oMailAddress = new MailAddress("آدرس جی میلم@gmail.com", " ", System.Text.Encoding.UTF8);
oMailMessage.From = oMailAddress;
oMailMessage.Sender = oMailAddress;
oMailAddress = new MailAddress("آدرس گیرنده@yahoo.com");
oMailMessage.To.Add(oMailAddress);
oMailMessage.SubjectEncoding = System.Text.Encoding.UTF8;
oMailMessage.Subject = txtTitleMesage.Text;
oMailMessage.BodyEncoding = System.Text.Encoding.UTF8;
oMailMessage.Body = txtMesage.Text;
SmtpClient oSmtpClient = new SmtpClient("127.0.0.1");
oSmtpClient.Port = 25;
oSmtpClient.Credentials = new NetworkCredential("آدرس جی میلم@gmail.com", "پسوردم");
oSmtpClient.Send(oMailMessage);
lblMesage.Text = " ایمیل ارسال شد.";
}
catch (System.Net.Mail.SmtpException exp)
{
lblMesage.Text = exp.ToString();
}
در webconfig هم چیزی ننوشتم
ولی خطای زیر و میده
System.Net.Mail.SmtpFailedRecipientException: Mailbox unavailable. The server response was: 5.7.1 Unable to relay for Hnvs گیرنده آدرس @yahoo.com at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception) at System.Net.Mail.SmtpClient.Send(MailMessage message) at ContantUs.btnSend_Click(Object sender, EventArgs e)
کاربر گرامی، لطفا جهت پاسخگویی آدرس پست الکترونیک یا شماره تماس خود را در متن پیام بنویسید.
کاربر گرامی، لطفا جهت پاسخگویی آدرس پست الکترونیک یا شماره تماس خود را در متن پیام بنویسید.
چندین بار هم این مقاله ها و خوندم ولی نفهمیدم
در ضمن smtp , IIS هم تیک خورده
دیگه نمی دونم باید چی کار کنم
من با این کد موفق به ارسال ایمیل شدم
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
System.Net.NetworkCredential cred = new System.Net.NetworkCredential
("Your_Gmail_Account@gmail.com", "Your_Gmail_Password");
mail.To.Add("To_Address");
mail.Subject = "This is a test mail message";
mail.From =
new System.Net.Mail.MailAddress(Your_Gmail_Account@gma il.com);
mail.IsBodyHtml = true;mail.Body = "This is a test mail message";
System.Net.Mail.SmtpClient smtp = new
System.Net.Mail.SmtpClient("smtp.gmail.com");
smtp.UseDefaultCredentials = false;
smtp.EnableSsl = true;
smtp.Credentials = cred;smtp.Port = 587;
smtp.Send(mail);
سلام و خسته نباشید
من کدهای فوق را به شکل زیر استفاده کردم
MailMessage mail = newMailMessage();
mail.From=newMailAddress("z@yahoo.com");
mail.To.Add("zh@yahoo.com");
mail.Subject="This is a mail";
mail.Body="hello";
SmtpClient smtp = newSmtpClient("127.0.0.1");
try
{
smtp.Send(mail);
Label1.Text = "SUCCESSFULL";
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
ولی ذر اولین مرحله خطای زیر را می دهد:
Failure sending mail.
ایراد کار من
با تشکر
سلام.
اگه بخواهيم محتويات يه فايل متني رو در بدنه ايميل ارسال كنيم چه طور ميشه اين كارو كرد؟
راهنمايي استفاده از maildefinition class
سلام فهميدم اينطوري :
publicvoid SendMail(string to, string from, string subject, string filename, bool ishtml,Control owrer)
{
//define mail var
MailMessage mail = newMailMessage();
MailDefinition md = newMailDefinition();
ListDictionary replacements = newListDictionary();
SmtpClient smtp;
//set mail parameters
md.From = from;
md.Subject = subject;
md.BodyFileName = filename;
md.IsBodyHtml = ishtml;
md.Priority = MailPriority.Normal;
replacements.Add("<%To%>", to);
replacements.Add("<%From%>", md.From);
//prepare mail for send
mail = md.CreateMailMessage(to, replacements, owrer);
//send email with existing hostname and user pass
smtp = newSmtpClient("_hostname");
smtp.Credentials = new System.Net.NetworkCredential("_username", "_password");
try
{
//try to send mail
smtp.Send(mail);
}
catch (Exception ex)
{
//handle error
tools.LogError("error.txt", this.ToString(), ex);
}
}
ضمنا فضاي نام System.Collections.Specialized را هم اضافه كنيد.
سلام
چطوری می تونم ایمیل ارسال شده را چک کنم که رسیده یا نرسیده ؟؟؟
سعی کردم از خصوصیات Deliveryoption استفاده کنم ولی نشد
سلام
کسی میدونه توی داتنت 4 چطور میشه ایمیل فارسی فرستاد
البته ارسال توسط کنترلهای PasswordRecovery و CreateUserWizard که ایمیل رو اتوماتیک میفرستند
منظورم اینه که توی MailDefinition اون فایل BodyFileName باید چطور باشه؟؟؟
لطفا هرکی بلده کمک کنه
خیلی ممنون
روش صحیح کار را با کدهای #C در اینجا ذکر می کنم
ابتدایک تابع تعریف می کنم که کار ارسال پیغام که حاوی title و body و احیانا فایل attach است را به آدرس مشخصی که در پارامتر وردی تابع قرار دارد می فرستد
مشاهده می فرمایید که برای ارسال ایمیل های فارسی می باست از سیستم UTF8 برای Encoding استفاده کنیم
protected void sendEmail(string title, string body, string attachedFile, string address)
{
MailMessage msg = new MailMessage();
msg.To.Add(address);
msg.SubjectEncoding = System.Text.Encoding.UTF8;
msg.BodyEncoding = System.Text.Encoding.UTF8;
msg.IsBodyHtml = true;
msg.Subject = title;
msg.Body = body;
string pathFiles = HttpContext.Current.Server.MapPath("~/files/") + attachedFile;
try
{
Attachment attachFile = new Attachment(pathFiles);
msg.Attachments.Add(attachFile);
}
catch (Exception)
{
}
SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = true;
smtp.Send(msg);
}
توجه داشته باشید که توسط mappath محل فیزیکی فایل را بدست آورده ایم اگر خودتان آدرس فیزیکی فایل را به تابع پاس می دهید این کد را حذف کنید و اگر آدرس مجازی نسبت به ریشه سایت را به تابع پاس می دهید این تابع خودش آدرس فیزیکی فایل را پیدا می کند
توجه: فرض کرده ام که فایل هایتان در پوشه ای به نام files می باشد.
ممکن است که گاهی نیاز به attach کردن فایلی به ایمیل داشته باشید و گاهی هم نداشته باشید پس بهتر هست که از این تابع دو override ایجاد کنید. یکی بدون پارامتر برای فایل attach و دیگری با پارامتری برای attach کردن فایل سپس هر موقع که نیاز شد هر کدام ار تابع های مورد نظر را صدا بزنید
تابعی که پارامتر attachfile نمی گیرد به این صورت هست
protected void sendEmail(string title, string body, string address)
{
MailMessage msg = new MailMessage();
msg.To.Add(address);
msg.SubjectEncoding = System.Text.Encoding.UTF8;
msg.BodyEncoding = System.Text.Encoding.UTF8;
msg.IsBodyHtml = true;
msg.Subject = title;
msg.Body = body;
SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = true;
smtp.Send(msg);
}
سوال اینجاست که این ایمیل از طرف چه کسی ارسال می شود
برای این کار می باستکدهای زیر را در web.config اضافه کنید و به جای * ها پسوردتان را قرار دهید
<system.net>
<mailSettings>
<smtp from="yourmail@gmail.com">
<network host="smtp.gmail.com" port="587" userName="yourmail@gmail.com" password="123456" />
</smtp>
</mailSettings>
</system.net>
اگر ویژوال استودیو به تگ هایی که در web.config اضافه می کنید ایراد گرفت یعنی اینکه در جای صحیح قرار نگرفته
این کدها را باید دقیقا در بین تگ </configuration><configuration> قرار دهید
همچنین می بینید که شما می بایست در web.config تنظیمات ایمیلتان را انجام داده و حتما پسورد ایمیلتان را هم باید وارد کنید تا بتوانید ایمیلی ارسال کنید. در ضمن تنها نکته غیر امنیتی کدهایی که در بالا نوشته ام (البته برای سادگی این کار را کرده ام و خود شما که همگی استادید و مطوئنم که این مورد را که برای امنیت ذکر می کنم حتما رعایت می کنید ) این هست که پسورد در web.config می باشد و بهتر هست آن را در مد #C تان وارد کنید تا حتی مسئولان هاستتان هم نتوانند به پسوردتان دسترسی داشته باشند و احیانا سو استفاده کنند ولی به یاد داشته باشید که با استفاده از روش دوم (قرار دادن پسورد در کدهای #C) جایی برای تغییر پسورد در سایت قرار دهید چون در روش قبل به راحتی می توانستید پسوردتان را بدون مشکلی عوض کنید.
آخرین ویرایش به وسیله محمد متاله : پنج شنبه 07 مهر 1390 در 21:11 عصر
با تشكر از آقا بابك بابت لطفي كه به همه علاقه منداي برنامه نويسي كرده.
من تمام اين مطالب رو متوجه شدم و جواب هم گرفتم ولي يه سوال كه برام گنگ مونده:
من يه سايت دارم كه ميخوام به بازديد كننده اجازه بدم بهم Email بده و قرار هم نيست كه authenthicate بشه.
يعني هر كي از راه رسيد و دلش خواست بهم mail بده.
حالا سوال اينه كه من بازم بايد Smtp.Credentials رو با مثلا username و Passwordخودم پر كنم و طرف وقتي mail ميزنه تو gmail خودم آدرس خودم رو ميبينم با متن بازديد كننده؟
SmtpClient Smtp = newSmtpClient("smtp.gmail.com");
Smtp.Credentials = newNetworkCredential("My Gmail", "My Gmail Password");
چون كسي حاضر نميشه تو يه سايت نا آشنا username و Password خودش رو وارد كنه و با اون mail بزنه.
توجه كنيد اساتيد صورت مساله اينه كه من فقط گيرندم و بازديد كننده ها به من mail ميزنن.
سلام
خیلی ممنونم از مقاله ی بسیار ارزشمند شما
من خیلی برنامه نویس خوبی نیستم لطفا کمکم کنین
من از کد های شما در vb.net استفاده کردم اما در خط آخر به مشکل میخوره و Failure sending mail. رو میده:
Dim mail As New MailMessage()
mail.From = New MailAddress("yaali1990@yahoo.com")
mail.To.Add("funali.z8709@yahoo.com")
mail.Subject = "This is an email"
mail.Body = "this is the body content of the email."
Dim smtp As New SmtpClient("dns1.mci.com", 25)
smtp.Credentials = New NetworkCredential("yaali1990@yahoo.com", "******")
smtp.Send(mail)
این کل دستوراتیه که من زدم،البته خط آخر در پرانتز گذاری درسته و اینجا پرانتز در اول خط رفته
همه ی دستورات در یک button نوشته شده
لطفا راهنماییم کنید دیوانم کرد!
آخرین ویرایش به وسیله sali2010 : شنبه 02 مهر 1390 در 22:28 عصر
مشکل رو پیدا کردم،مشکل شرکت اینترنتی ای هست که از آن خدمات می گیرم.پورت های 25 و 587 رو بسته که ادعا میکنه کار ما نیست کار مخابراته! من دیال آپ هم نشد چون این پورت هارو این دفعه خود مخابرات بسته.اگر به این صریحی مطلبی برای دریافت ایمیل از طریق pop3 یا IMAP هست در جریانم بگذارید.
پورت های کختلف اب سیستم های مختلف برای ارسال ایمیل:
POP3 - port 110
IMAP - port 143
SMTP - port 25
HTTP - port 80
Secure SMTP (SSMTP) - port 465
Secure IMAP (IMAP4-SSL) - port 585
IMAP4 over SSL (IMAPS) - port 993
Secure POP3 (SSL-POP) - port 995
آخرین ویرایش به وسیله sali2010 : چهارشنبه 06 مهر 1390 در 15:41 عصر
دلیل استفاده از ip در این خط چیه؟
Dim smtp As New SmtpClient("127.0.0.1")
اگر یک توضیحی بدید که در سرور های مختلف این مقدار متفاوت هست و یا ثابته؟
با سلام
این آی پی یک مقدار ثابت بوده که سیستم را بصورت لوکال در نظر میگیرد
دوست عزیز از اینکه زحمت تهیه این مقاله را کشیدیدواقعا سپاسگذارم
از مقاله بسیار خوبتون ممنونم .فوق العاده بودو خیلی کمک کرد بهم. فقط سوالی که دارم راجب به ارسال ایمیل در رابطه با ویِژگی to.add هست چطور میشه کاری کرد که به چند آدرس ایمیل را ارسال کرد و از چه کنترلی در برنامه برای ذخیره آدرسهای ایمیل استفاده کرد ؟ مثلا کاری مثل send to allانجام داد؟