سلام دوست من اگه این دو خط
Dim perm As New System.Net.NetworkCredential("Username", "password")
smtp.Credentials = perm
ننویسی خودش اتوماتیک تنظیمات وب کانفیگ می خونه
موفق باشی
Printable View
سلام دوست من اگه این دو خط
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) جایی برای تغییر پسورد در سایت قرار دهید چون در روش قبل به راحتی می توانستید پسوردتان را بدون مشکلی عوض کنید.
با تشكر از آقا بابك بابت لطفي كه به همه علاقه منداي برنامه نويسي كرده.
من تمام اين مطالب رو متوجه شدم و جواب هم گرفتم ولي يه سوال كه برام گنگ مونده:
من يه سايت دارم كه ميخوام به بازديد كننده اجازه بدم بهم 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 نوشته شده
لطفا راهنماییم کنید دیوانم کرد!
مشکل رو پیدا کردم،مشکل شرکت اینترنتی ای هست که از آن خدمات می گیرم.پورت های 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
دلیل استفاده از ip در این خط چیه؟
Dim smtp As New SmtpClient("127.0.0.1")
اگر یک توضیحی بدید که در سرور های مختلف این مقدار متفاوت هست و یا ثابته؟
با سلام
این آی پی یک مقدار ثابت بوده که سیستم را بصورت لوکال در نظر میگیرد
دوست عزیز از اینکه زحمت تهیه این مقاله را کشیدیدواقعا سپاسگذارم
از مقاله بسیار خوبتون ممنونم .فوق العاده بودو خیلی کمک کرد بهم. فقط سوالی که دارم راجب به ارسال ایمیل در رابطه با ویِژگی to.add هست چطور میشه کاری کرد که به چند آدرس ایمیل را ارسال کرد و از چه کنترلی در برنامه برای ذخیره آدرسهای ایمیل استفاده کرد ؟ مثلا کاری مثل send to allانجام داد؟
سلام به همه دوستان . این تاپیک خیلی بهم کمک کرد . واقعا ممنون.
دوستانی که میخوان خیلی سریع یک ایمیل ساده بفرستن میتونن از نمونه کد زیر استفاده کنن.
در کد زیر من از جیمیل خودم واسه خودم ایمیل فرستادم :گیج:
private void button1_Click(object sender, EventArgs e)
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress("hamid484@gmail.com");
mail.To.Add("hamid484@gmail.com");
mail.Subject = "salam";
mail.Body ="khobi?";
SmtpClient smtp = new SmtpClient("Smtp.gmail.com", 25);
smtp.Credentials = new NetworkCredential("hamid484@gmail.com", "رمز عبور");
smtp.EnableSsl = true;
smtp.Send(mail);
}
یک نکته خیلی مهم که حتما بهش توجه باید کرد نوشتن این کد هست smtp.EnableSsl = true که باعث میشه برخی از خطاها ایجاد نشه.
همین یک خط کد کار منو راه انداخت
سلام ممنون از مطلبتون
دوست عزیز در این کد ارسال کننده و دریافت کننده یکی هست ؟نه؟
یه چیز دیگه این به چه معنایی هست؟
SmtpClient smtp = new SmtpClient("Smtp.gmail.com", 25);
و این ک اگر در برنامه erorr به وجود بیاد این قسمت رو لو میده و پسورد لو میره نه ؟
آقا بابک خالدیان ، انصافا دمت گرم. با این مقاله خیلی حال کردم.
موفق باشی.
با تشکر از زحمات شما عزیزان
بنده به یه مشکل عجیب برخوردم اونم این که با استفاده ازSMTP ClIENT ایمیل ارسال می کنم و برای آدرس های Gmail ارسال میشه ولی برای آدرس های Yahoo ایمل ارسال نمیشه
میشه کمکم کنید
با تشکر
بر عکس شما واسه من برای Gmail ارسال میشه ولی برای Yahoo ارسال نمی شه
;-)