PDA

View Full Version : توضیح کد ارسال ایمیل



fahmari
جمعه 29 دی 1391, 20:59 عصر
دوستان خیلی سرچ کردم، خیلی از دوستان راهنمایی های خوبی برای ارسال ایمیل کرده بودن.
من می خوام با ASP.net این کارو کنم، کدشو که دوستان گذاشته بودن پیدا کردم، فقط یه قسمتی رو متوجه نمیشن. من باید بدنه ایمیلم رو کجا بسازم که به دستور mail.body انتسابش بدم؟؟؟
لطفا راهنمایی کنید...
کد زیر رو می خوام استفاده کنم:

protected void Button1_Click(object sender, EventArgs e)
{
//create the message
MailMessage mail = new MailMessage();
//add the email address we will be sending the message to
mail.To.Add("Recipient@gmail.com");
//add our email here
mail.From = new MailAddress("Sender@Gmail.com");
//email's subject
mail.Subject = "In line image test";
//email's body, this is going to be html. note that we attach the image as using cid
mail.Body = "Hello email. <img src=\"cid:tmpImage.gif\">";
//set email's body to html
mail.IsBodyHtml = true;

//add our attachment
Attachment imgAtt = new Attachment(Server.MapPath("tmpImage.gif"));
//give it a content id that corresponds to the src we added in the body img tag
imgAtt.ContentId = "tmpImage.gif";
//add the attachment to the email
mail.Attachments.Add(imgAtt);

//setup our smtp client, these are Gmail specific settings
SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.EnableSsl = true; //ssl must be enabled for Gmail
//our Gmail account credentials
NetworkCredential credentials = new NetworkCredential("Sender@Gmail.com", "Password");
//add credentials to our smtp client
client.Credentials = credentials;

try
{
//try to send the mail message
client.Send(mail);
}
catch
{
//some feedback if it does not work
Button1.Text = "Fail";
}
}

crazy_1892
جمعه 29 دی 1391, 21:06 عصر
مقاله::مرجع کامل ارسال ایمیل در دات نت 2 (http://barnamenevis.org/showthread.php?71785-%D9%85%D9%82%D8%A7%D9%84%D9%87-%D9%85%D8%B1%D8%AC%D8%B9-%DA%A9%D8%A7%D9%85%D9%84-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%A7%DB%8C%D9%85%DB%8C%D9%84-%D8%AF%D8%B1-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA-2/page12)

M.KH-SH
جمعه 29 دی 1391, 21:10 عصر
http://barnamenevis.org/showthread.php?346657-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%A7%DB%8C%D9%85%DB%8C%D9%84-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D8%A8%D8%A7-%D8%B3%D8%B1%D8%B9%D8%AA%DB%8C-%D8%A8%D8%A7%D9%84%D8%A7%D8%AA%D8%B1

fahmari
جمعه 29 دی 1391, 21:56 عصر
مقاله::مرجع کامل ارسال ایمیل در دات نت 2 (http://barnamenevis.org/showthread.php?71785-%D9%85%D9%82%D8%A7%D9%84%D9%87-%D9%85%D8%B1%D8%AC%D8%B9-%DA%A9%D8%A7%D9%85%D9%84-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%A7%DB%8C%D9%85%DB%8C%D9%84-%D8%AF%D8%B1-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA-2/page12)

یه سوال برام پیش اومد. سایتی که من دارم طراحی می کنم پروژه پایانیمه، و قرار نیست براش دومین و این ها گرفته بشه. این ارسال میل رو می تونم روی سیستم کلاینت خودم تست کنم؟

morteza_mokhtari
جمعه 29 دی 1391, 22:00 عصر
بله مبتونید تست کنید

fahmari
جمعه 29 دی 1391, 22:03 عصر
بله مبتونید تست کنید

معذرت می خوام میشه توضیح بدین اونوقت سرور SMTP چی میشه؟ منظورم اینه که چجوری کار می کنه؟

morteza_mokhtari
جمعه 29 دی 1391, 22:15 عصر
سرور smtp که ربطی به دامنه و هاست نداره شما همون کدی رو که بالا گذاشتید رو تویه سایت بذارید و رویه کلاینت امتحان کنید جواب میده بنده خودم همیشه رویه کلاینت امتحان میکنم اون کدی هم که بالا گذاشتید رو هیچ جاشو نمیخواد تغییر بدید فقد میل گیرنده و میل خودتون و پسورد میلتون رو اضافه کنید.البته اگه چیزی رو هم نمیخواهید به میلتون ضمیمه کنید اون قسمت ضمیمه (attachment) رو هم بردارید فقد یه نکته اگه دامنه خریدید و خواستید که از ایمیل های دامنتون مثلا info@example.com استفاده کنید باید پورت اون رو که تویه مثال بالا 587 هستش رو برابر 23 قرار بدید اگه هم دامنه نمیخواهید بخرید با استفاده از همون آی دی جی میل میتونید این کار رو بکنید و پورت اون هم که 587 هستش رو نباید تغییر بدهید.

fahmari
جمعه 29 دی 1391, 22:23 عصر
سرور smtp که ربطی به دامنه و هاست نداره شما همون کدی رو که بالا گذاشتید رو تویه سایت بذارید و رویه کلاینت امتحان کنید جواب میده بنده خودم همیشه رویه کلاینت امتحان میکنم اون کدی هم که بالا گذاشتید رو هیچ جاشو نمیخواد تغییر بدید فقد میل گیرنده و میل خودتون و پسورد میلتون رو اضافه کنید.البته اگه چیزی رو هم نمیخواهید به میلتون ضمیمه کنید اون قسمت ضمیمه (attachment) رو هم بردارید فقد یه نکته اگه دامنه خریدید و خواستید که از ایمیل های دامنتون مثلا info@example.com استفاده کنید باید پورت اون رو که تویه مثال بالا 587 هستش رو برابر 23 قرار بدید اگه هم دامنه نمیخواهید بخرید با استفاده از همون آی دی جی میل میتونید این کار رو بکنید و پورت اون هم که 587 هستش رو نباید تغییر بدهید.

ممنون از توضیح کاملتون. موفق باشید و شاد ...

fahmari
جمعه 29 دی 1391, 22:28 عصر
فقط من هنوز به جواب سوال اصلیم نرسیدم! :(
کل بدنه ایمیل ارسالی من همون رشته ایه که به mail.body اختصاص میدم؟؟
اگه محتویات ایمیل من زیاد باشه و پر از تگ های Html بازم همونجا باید بنویسمش ؟؟

morteza_mokhtari
جمعه 29 دی 1391, 22:35 عصر
بله کل قسمت ارسالی شما تویه قسمت mail.body قرار میگیره که داخل متن ارسالیتون کد html هم میتونید قرار بدید فقد یه نکته اگه داخل کد html تون عکس باشه تویه میل نشون داده نمیشه که فکر کنم دلیلش مشکلات امنیتی باشه.اگه کاربر به ایمیل ارسالی شما اطمینان داشته باشه با کلیک رویه دکمه مربوطه میتونه تصاویر ایمیل شما رو هم ببینه.موفق باشید

fahmari
جمعه 29 دی 1391, 22:37 عصر
خیلــــــــــــــــــــــ ـــــــــــــــــــــی ممنون :)
همیشه سلامت و موفق و شاد باشید ...

fahmari
شنبه 30 دی 1391, 14:42 عصر
من از این کد برای ارسال استفاده کردم. هیچ خطایی نمیده ولی میلم رو که چک می کنم هیچ میلی ارسال نشده ! :(
میشه بگید مشکل چیه؟

protected void Accept_Click(object sender, ImageClickEventArgs e)
{
DataClasses1DataContext LinqCreateUser = new DataClasses1DataContext();
int i = LinqCreateUser.SP_CreateUser(2,txtUserEmail.Text, txtPass.Text, txtName.Text, txtFamily.Text,comSex .Text ,Convert .ToInt16 ( comYear.SelectedValue ),Convert .ToString ( comMonth.SelectedValue ),Convert .ToInt16 ( comDay.SelectedValue ) ,txtPhoneNumber.Text, txtMobileNumber.Text, txtPostalCode.Text,Convert.ToString ( comProvince.SelectedValue ) , txtCity.Text, txtAddress.Text, true);
if (i == 1)
{
Response.Redirect("AcceptRegistration.aspx");

// Send accept mail to user
MailMessage Mail = new MailMessage();
Mail.From = new MailAddress("hoonaamsite@yahoo.com","هـونـــام ",System .Text .Encoding.GetEncoding ("windows-1256"));
Mail.To.Add(txtUserEmail .Text );
Mail.Subject = " به فروشـگاه اینترنتی هـــونـــام خوش آمدید";
Mail.Body = "this is a test mail";
Mail.IsBodyHtml = true;
SmtpClient SMTP = new SmtpClient("smtp.gmail.com",587);
SMTP.EnableSsl = true;
NetworkCredential Credentials = new NetworkCredential("My Gmail Address", "myPass");
SMTP.Credentials = Credentials;
try
{
SMTP.Send(Mail);
}
catch
{
lblError.Visible = true;
}

}
else
{
lblError.Text = "کاربری با این مشخصات قبلا ثبت نام کرده است";
lblError.Visible = true;
}

}

fahmari
شنبه 30 دی 1391, 14:53 عصر
یه سوال دیگه ! برای ارسال میل ، حتما باید از ای دی Gmail استفاده کنم؟؟!
نمیشه از ای دی yahoo استفاده کرد؟!

فک کردم مشکل از اینه که Mail.from رو برابر hoonaamsite@yahoo.com قرار دادم ولی اونم برابر همون آی دی Gmail که تو Credential قرار دادم کردم و بازم مشکل حل نشد! :(
هیچ میلی ارسال نمیکنه :(

morteza_mokhtari
شنبه 30 دی 1391, 20:45 عصر
var smtp = new System.Net.Mail.SmtpClient();
{
smtp.Host = "smtp.mail.yahoo.com";
smtp.Port = 587;
smtp.EnableSsl = false;
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
smtp.Timeout = 20000;
}

morteza_mokhtari
شنبه 30 دی 1391, 20:47 عصر
در ضمن کدتون مشکل داره باید response.redirect رو پایین صفحه قرار بدهید چون قبل از اینکه کد ارسال ایمیل اجرا بشه صفحه redirect میشه به یک صفحه دیگه.

fahmari
شنبه 30 دی 1391, 22:48 عصر
در ضمن کدتون مشکل داره باید response.redirect رو پایین صفحه قرار بدهید چون قبل از اینکه کد ارسال ایمیل اجرا بشه صفحه redirect میشه به یک صفحه دیگه.

بله درسته بعد از اینکه این تاپیک رو گذاشتم اینو متوجه شدم و درستش کردم ولی هنوز میل ارسال نمیشه. برم کد بالا رو هم اضافه کنم ببینم چی میشه.
مرسی :)

fahmari
شنبه 30 دی 1391, 23:48 عصر
var smtp = new System.Net.Mail.SmtpClient();
{
smtp.Host = "smtp.mail.yahoo.com";
smtp.Port = 587;
smtp.EnableSsl = false;
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
smtp.Timeout = 20000;
}

البته من این تنظیمات رو انجام دادم فقط شکل دستوریش فرق میکنه! تنها چیزی که با کد شما فرق میکنه اینه که شما ssl رو false کردید که چون من gmail استفاده کرده بودم دوستان گفته بودن برای اون باید فعال باشه، ئ دیگه اینکه DeliveryMethod و Timeout رو استفاده نکردم :) امیدوارم با اضافه کردن اینا درست بشه.ممنون

fahmari
شنبه 30 دی 1391, 23:50 عصر
درســــــــــــــــــــــ ــــــت شــــــــــــــــــــــــ ـد :) ممنــــــــــــــــــــــ ـــــونم.
کلی از کارم جلو افتاد :) یه دنیا تشکر :)

fahmari
شنبه 30 دی 1391, 23:58 عصر
فقط یه سوال دیگه :افسرده: ببخشید !
می خوام بدنه ایمیلم یه همچین چیزی باشه :
98705
کد اینو چجوری داخل یه رشته قرار بدم؟!!
آخه این آدرس ایمیل و رمز و اینا داخلش داره که یا باید از دیتابیس واکشی بشه یا از داخل تکست باکس ها یا متغییرهایی که تو اون صفحه دارم خونده بشه.
اینا رو که قرار میدم خطا می گیره! داخل رشته چجوری اینا قرار بگیرن؟!
اینم کمکم کنید دیگه اذیت نمی کنم! البته قول نمیدم!

aslan
یک شنبه 01 بهمن 1391, 01:09 صبح
فقط یه سوال دیگه :افسرده: ببخشید !
می خوام بدنه ایمیلم یه همچین چیزی باشه :
98705
کد اینو چجوری داخل یه رشته قرار بدم؟!!
آخه این آدرس ایمیل و رمز و اینا داخلش داره که یا باید از دیتابیس واکشی بشه یا از داخل تکست باکس ها یا متغییرهایی که تو اون صفحه دارم خونده بشه.
اینا رو که قرار میدم خطا می گیره! داخل رشته چجوری اینا قرار بگیرن؟!
اینم کمکم کنید دیگه اذیت نمی کنم! البته قول نمیدم!

http://www.aspsnippets.com/Articles/ASPNet-Send-email-with-Images-embedded-in-Rich-Text-HTML-body.aspx
http://www.codeproject.com/Articles/31897/Embed-an-Image-in-Email-using-ASP-NET
http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=272&page=1
http://www.systemnetmail.com/faq/3.1.2.aspx
http://www.aspdotnetcodes.com/Send_Email_Dynamic_Content.aspx
http://www.search-this.com/2009/02/05/aspnet-sending-email-both-in-html-and-plain-text/
http://stackoverflow.com/questions/620265/can-i-set-up-html-email-templates-with-asp-net
http://www.aspsnippets.com/Articles/Create-and-send-HTML-Formatted-Emails-in-ASP.Net-using-C-and-VB.Net.aspx
http://go4answers.webhost4life.com/Example/create-web-form-aspnet-send-email-157320.aspx
http://www.mikesdotnetting.com/Article/41/Send-form-content-by-email-in-ASP.NET
http://www.codeproject.com/Articles/11371/Sending-Email-from-Asp-Net-Using-Formatted-Text-Ed

fahmari
یک شنبه 08 بهمن 1391, 10:35 صبح
http://www.aspsnippets.com/Articles/ASPNet-Send-email-with-Images-embedded-in-Rich-Text-HTML-body.aspx
http://www.codeproject.com/Articles/31897/Embed-an-Image-in-Email-using-ASP-NET
http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=272&page=1
http://www.systemnetmail.com/faq/3.1.2.aspx
http://www.aspdotnetcodes.com/Send_Email_Dynamic_Content.aspx
http://www.search-this.com/2009/02/05/aspnet-sending-email-both-in-html-and-plain-text/
http://stackoverflow.com/questions/620265/can-i-set-up-html-email-templates-with-asp-net
http://www.aspsnippets.com/Articles/Create-and-send-HTML-Formatted-Emails-in-ASP.Net-using-C-and-VB.Net.aspx
http://go4answers.webhost4life.com/Example/create-web-form-aspnet-send-email-157320.aspx
http://www.mikesdotnetting.com/Article/41/Send-form-content-by-email-in-ASP.NET
http://www.codeproject.com/Articles/11371/Sending-Email-from-Asp-Net-Using-Formatted-Text-Ed

از لینک ها استفاده کردم، عالی بود. ممنونم.
الان فقط یه مشکل وجود داره! اینکه عکسی که توی میل وجود داره نشون داده نمیشه!! دکمه show images میاد! (قبلا هم یکی از دوستان گفته بودن که اگه عکس تو ایمیل باشه اینجوری میشه)
چیکار کنم که عکس خودش نمایش پیدا کنه و نیازی نباشه کابر دکمه show images رو بزنه؟؟؟

aslan
یک شنبه 08 بهمن 1391, 11:35 صبح
از لینک ها استفاده کردم، عالی بود. ممنونم.
الان فقط یه مشکل وجود داره! اینکه عکسی که توی میل وجود داره نشون داده نمیشه!! دکمه show images میاد! (قبلا هم یکی از دوستان گفته بودن که اگه عکس تو ایمیل باشه اینجوری میشه)
چیکار کنم که عکس خودش نمایش پیدا کنه و نیازی نباشه کابر دکمه show images رو بزنه؟؟؟

سلام
عکسی که میگین کجا قرار دارد ؟ ؟
عکس باید تو فضای اینترنت باشه و آدرس اینترنتی اونو تو ایمیل قرار بدین

fahmari
یک شنبه 08 بهمن 1391, 11:44 صبح
سلام
عکسی که میگین کجا قرار دارد ؟ ؟
عکس باید تو فضای اینترنت باشه و آدرس اینترنتی اونو تو ایمیل قرار بدین


سلام
آهان! نه من عکس رو آپلود نکردم.
چون بدنه میلم HTML هست فک می کردم اون رو هم می خونه و عکسم رو با تگ قرار دادم!
ممنون از راهنماییتون.
میشه بگید من کجا می تونم عکسم رو آپلود کنم؟؟
و اینکه بعد از آپلود آدرس اون رو چجوری توی صفحه HTML ام قرار بدم؟؟؟

aslan
یک شنبه 08 بهمن 1391, 12:09 عصر
سلام
آهان! نه من عکس رو آپلود نکردم.
چون بدنه میلم HTML هست فک می کردم اون رو هم می خونه و عکسم رو با تگ قرار دادم!
ممنون از راهنماییتون.
میشه بگید من کجا می تونم عکسم رو آپلود کنم؟؟
و اینکه بعد از آپلود آدرس اون رو چجوری توی صفحه HTML ام قرار بدم؟؟؟

سلام
طبیعتا بهترین جا برای آپلود عکساتون فضای اینترنتی ( هاست ) خودتون هستش
فضاهای رایگان تو اینترنت برای اینکار هستش که میتونین سرچ کنین . ولی بنظرم اکثرا ف ی ل ت ر میباشند

برای تست میتونین از این لوگو گوگول https://www.google.com/images/srpr/logo3w.png
که تو این آدرسه
https://www.google.com/images/srpr/logo3w.png و بصورت زیر استفاده کنین :

<img src="https://www.google.com/images/srpr/logo3w.png" />

fahmari
یک شنبه 08 بهمن 1391, 12:19 عصر
سلام
طبیعتا بهترین جا برای آپلود عکساتون فضای اینترنتی ( هاست ) خودتون هستش
فضاهای رایگان تو اینترنت برای اینکار هستش که میتونین سرچ کنین . ولی بنظرم اکثرا ف ی ل ت ر میباشند

برای تست میتونین از این لوگو گوگول https://www.google.com/images/srpr/logo3w.png
که تو این آدرسه
https://www.google.com/images/srpr/logo3w.png و بصورت زیر استفاده کنین :

<img src="https://www.google.com/images/srpr/logo3w.png" />

ممنون از راهنمایی خوبتون. سایتی که من دارم طراحی میکنم به عنوان پروژه قراره ارائه بشه و هاستی براش نداریم :)
بازم ممنون از راهنمایی های کاملتون ...
موفق باشید .

hamid_kha
یک شنبه 15 بهمن 1391, 11:44 صبح
برای تست میتونین از این لوگو گوگول https://www.google.com/images/srpr/logo3w.png
که تو این آدرسه
https://www.google.com/images/srpr/logo3w.png و بصورت زیر استفاده کنین :

<img src="https://www.google.com/images/srpr/logo3w.png" />
با سلام

بنده این تگ image ای که گفتید داخل body ایمیلی که میخوام بفرستم قرار دادم-
مشکلی که وجود داره اینه که عکس رو توی ایمیل نشان نمیده و همانطور که دوستمون در بالا اشاره کردند می بایستی دکمه show images را کلیک کنیم تا عکس رو نشون بده!
حالا من میخوام وقتی ایمیل رو باز میکنم عکس رو نشون بده مثل سایت دیجی کالا که ایمیل میفرسته؟!
اگه یک نمونه مثال قرار بدید ممنون میشم

موفق باشید

simorgh-hossein
سه شنبه 01 اسفند 1391, 08:50 صبح
سلام دوستان
من از کد زیر برای ارسال ایمیل استفاده میکنم ولی ایمیلی به inbox نمیره !
MailMessage mail = new MailMessage();
mail.From = new MailAddress("30morgh.soft@gmail.com", "حسین", System.Text.Encoding.GetEncoding("windows-1256"));
mail.To.Add("30morgh.soft@gmail.com");
mail.Subject = "salam";
mail.Body = "ok";
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("30morgh.soft@gmail.com", "psssn");
try
{
smtp.Send(mail);
}
catch { }
به نظرتون مشکل از کجاس ؟

simorgh-hossein
سه شنبه 01 اسفند 1391, 09:01 صبح
چرا وقتی جیمیل مینویسم ازسال میشه ولی وقتی ایمیل مینویسم ارسال نمیشه ؟؟؟
مگه میشه ؟؟؟ :لبخند:

simorgh-hossein
سه شنبه 01 اسفند 1391, 19:24 عصر
یعنی کسی تا حالا این مشکلو نداشته ؟؟؟ :متفکر:

s.hoseinpoor
پنج شنبه 03 اسفند 1391, 15:33 عصر
پورت برای جیمیله