PDA

View Full Version : سوال: در مورد ارسال ایمیل



morteza69
سه شنبه 11 مهر 1391, 14:55 عصر
با سلام
من دوتا تکست باکس رو صفحه دارم که میخوام با زدن دکمه سند متنی که داخل تکست باکسها نوشته ب ایمیل من ارسال بشه...
کدی ک باید استفاده کنم رو نمیدونم...ممنون میشم راهنمایی کنین...

r_s1389@yahoo.com
سه شنبه 11 مهر 1391, 16:44 عصر
اول یم فضای نام تعریف کن usin system.data.mail
بعد این کد رو بنیس ولی به جای ** نام یک ایمیل و به جای +++++++++ پسوورد ایمیلت رو بنویس
SmtpClient obj = new SmtpClient();

MailMessage MailMsg = new MailMessage();

MailMsg.To.Clear();

MailMsg.To.Add(new MailAddress(txtTo.Text));
MailMsg.From = new MailAddress("**********");
MailMsg.Subject = txtSubject.Text;
MailMsg.BodyEncoding = System.Text.Encoding.UTF8;
MailMsg.IsBodyHtml = true;
obj.Host = "smtp.mail.yahoo.com";

System.Net.NetworkCredential basicAuthenticaionInfo = new System.Net.NetworkCredential("*************", "++++++++++");

obj.UseDefaultCredentials = false;

obj.Credentials = basicAuthenticaionInfo;

MailMsg.Body = txtMail.Text;
MailMsg.IsBodyHtml = true;
try
{
obj.Send(MailMsg);
lblMsg.Text = "Mail Send !";
}
catch ( Exception ex )
{
lblMsg.Text = ex.ToString();
}

r_s1389@yahoo.com
سه شنبه 11 مهر 1391, 16:46 عصر
این فضای نام رو بنویس using system.net.mail

PetekDincos
سه شنبه 11 مهر 1391, 17:30 عصر
اول یم فضای نام تعریف کن usin system.data.mail
بعد این کد رو بنیس ولی به جای ** نام یک ایمیل و به جای +++++++++ پسوورد ایمیلت رو بنویس
SmtpClient obj = new SmtpClient();

MailMessage MailMsg = new MailMessage();

MailMsg.To.Clear();

MailMsg.To.Add(new MailAddress(txtTo.Text));
MailMsg.From = new MailAddress("**********");
MailMsg.Subject = txtSubject.Text;
MailMsg.BodyEncoding = System.Text.Encoding.UTF8;
MailMsg.IsBodyHtml = true;
obj.Host = "smtp.mail.yahoo.com";

System.Net.NetworkCredential basicAuthenticaionInfo = new System.Net.NetworkCredential("*************", "++++++++++");

obj.UseDefaultCredentials = false;

obj.Credentials = basicAuthenticaionInfo;

MailMsg.Body = txtMail.Text;
MailMsg.IsBodyHtml = true;
try
{
obj.Send(MailMsg);
lblMsg.Text = "Mail Send !";
}
catch ( Exception ex )
{
lblMsg.Text = ex.ToString();
}

با سلام
من با استفاده از متد بالا یه ایمیل ارسال کردم و موفقیت آمیز بود اما ایمیلی به میلی که براش فرستادم مشاهده نشد . با تشکر

amin.m1993
سه شنبه 11 مهر 1391, 20:41 عصر
میتونی از این متد استفاده کنی .
قابلیت ارسال فایل هم داره(attachment). همچنین میتونی به yahoo و gmail و hotmail ارسال کنی
موفق باشید.
namespace MailSending
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

}
string servername()
{
string [] t=textBox1.Text.Split('@');
if (t[1] == "ymail.com" || t[1] == "yahoo.com")
{
smtp.EnableSsl = false;
smtp.Port = 587;
return "smtp.mail.yahoo.com";
}
else if (t[1] == "gmail.com")
{
smtp.EnableSsl = true;
return "smtp.gmail.com";
}
else if (t[1] == "hotmail.com")
{ smtp.EnableSsl = true; return "smtp.live.com"; }
else { MessageBox.Show("your mail address isn't correct"); return null; }
}
SmtpClient smtp = new SmtpClient();
MailMessage mail = new MailMessage();
private void button1_Click(object sender, EventArgs e)
{
if (MessageBox.Show("are you sure want to send this mail?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
try
{
string[] add = textBox4.Text.Split(' ');
foreach (string var in add)
{
mail.To.Add(var);
}
mail.From = new MailAddress(textBox1.Text);
mail.Subject = textBox3.Text;
mail.Body = textBox6.Text;
smtp.Host = servername();
NetworkCredential myCredentials = new NetworkCredential(textBox1.Text, textBox2.Text);
smtp.Credentials = myCredentials;
smtp.Send(mail);
ToolLabel.Text = "Message send successfully !";
}
catch (Exception ex) { MessageBox.Show(ex.Message); ToolLabel.Text = "Error sending !"; }
}
}

private void button2_Click(object sender, EventArgs e)
{

openFileDialog1.FileName = "";
if (openFileDialog1.ShowDialog()==DialogResult.OK)
{
mail.Attachments.Add(new Attachment(openFileDialog1.FileName));
}

}
}

PetekDincos
چهارشنبه 12 مهر 1391, 17:35 عصر
با سلام
هنگام استفاده از این متدها مشکلی نیست و پیغام ارسال ایمیل به درستی نمایش داده می شه اما به آدرس ایمیلم چیزی نمی یاد مشکل از چی می تونه باشه . با تشکر

r_s1389@yahoo.com
شنبه 15 مهر 1391, 18:59 عصر
ممکن است بره داخل spam ایمیلت برو چک کن

PetekDincos
شنبه 15 مهر 1391, 20:45 عصر
با سلام
نه اصلا ایمیلی دریافت نمی شه و نمی دونم مشکل از چیه من می خوام از این در یه نرم افزار استفاده کنم که از طریق اون از کاربر ایمیل دریافت کنم . با تشکر

danialafshari
شنبه 15 مهر 1391, 21:35 عصر
این کد توسط خودم تست شده

using System.Net;
using System.Net.Mail;
//----------------
SmtpClient MyMail = new SmtpClient();
MailMessage MyMsg = new MailMessage();
MyMail.Host = "smtp.mail.yahoo.com";
MyMsg.To.Add(new MailAddress("Receieption Email"));
MyMsg.Subject = "You Subject";
MyMsg.SubjectEncoding = Encoding.UTF8;
MyMsg.IsBodyHtml = true;
MyMsg.From = new MailAddress("Your Email", "Your Name");
MyMsg.BodyEncoding = Encoding.UTF8;
MyMsg.Body = "Your Body";
MyMail.UseDefaultCredentials = false;
NetworkCredential MyCredentials = new NetworkCredential("Your Email", "Your Password");
MyMail.Credentials = MyCredentials;
MyMail.Send(MyMsg);

موفق باشید

malihehshajari
یک شنبه 16 مهر 1391, 09:09 صبح
این کد توسط خودم تست شده

using System.Net;
using System.Net.Mail;
//----------------
SmtpClient MyMail = new SmtpClient();
MailMessage MyMsg = new MailMessage();
MyMail.Host = "smtp.mail.yahoo.com";
MyMsg.To.Add(new MailAddress("Receieption Email"));
MyMsg.Subject = "You Subject";
MyMsg.SubjectEncoding = Encoding.UTF8;
MyMsg.IsBodyHtml = true;
MyMsg.From = new MailAddress("Your Email", "Your Name");
MyMsg.BodyEncoding = Encoding.UTF8;
MyMsg.Body = "Your Body";
MyMail.UseDefaultCredentials = false;
NetworkCredential MyCredentials = new NetworkCredential("Your Email", "Your Password");
MyMail.Credentials = MyCredentials;
MyMail.Send(MyMsg);

موفق باشید

سلام
این کدی که نوشتید حتما باید پسورد ایمیل رو بهش بدیم تا کار کنه .
راهی وجود نداره که فقط از آدرس ایمیل استفاده کنیم و نیازی به پسورد نباشه؟

PetekDincos
یک شنبه 16 مهر 1391, 09:56 صبح
سلام
این کدی که نوشتید حتما باید پسورد ایمیل رو بهش بدیم تا کار کنه .
راهی وجود نداره که فقط از آدرس ایمیل استفاده کنیم و نیازی به پسورد نباشه؟

با سلام
اگه اینطوری بشه خیلی عالیه اما فکر کنم نمی شه . با تشکر

malihehshajari
یک شنبه 16 مهر 1391, 10:00 صبح
کدی که amin.m1993 گذاشتن بدون نیاز به پسورد کار میکنه ولی وقتی سند میکنم خطا میده و ارسال نمیکنه

AmirGhasemi
یک شنبه 16 مهر 1391, 11:31 صبح
آقا من هم يه سوال دارم
من متد ارسال ايميلم درست كار مي كنه! مشكلي در ارسال ندارم! اما بحثم اينه كه اگه بدنه ايميلم HTML باشه ايميل خالي ارسال ميكنه! من IsBodyHTML را هم Trueكرده ام اما باز بدنه ايميل را خالي ارسال مي كنه!
چرا؟
دوستان ياري كنيد تا ما عروس داري كنيم!

amin.m1993
دوشنبه 17 مهر 1391, 22:07 عصر
کدی که amin.m1993 گذاشتن بدون نیاز به پسورد کار میکنه ولی وقتی سند میکنم خطا میده و ارسال نمیکنه

دوست عزیز اینطور نیست چون بدون دریافت پسورد ارسال کننده امکان اتصال به smtp وجود نداره در این قسمت از کدی که گذاشتم منظور از textbox1 همان یوزر و textbox2 پسورد است.

NetworkCredential myCredentials = new NetworkCredential(textBox1.Text, textBox2.Text);

در ضمن خط مورد نظر و خطا رو بگذارید تا علت را بفهمیم.
موفق باشید.