PDA

View Full Version : مبتدی: ارسال ایمیل با کد سی شارپ



unicloob
جمعه 25 شهریور 1390, 17:59 عصر
با سلام خدمت دوستان
من می خواستم به وسیله کد سی شارپ ایمیل بفرستم برای این کار از کد زیر استفاده می کنم که سرعتش پایین است آیا سرور و یا پرت دیگه ای است که سرعت آن بالا تر باشد


MailMessage mymessage = new MailMessage();
mymessage.From = new MailAddress(fromemail.Text);
mymessage.To.Add(xx);
mymessage.Subject = subject.Text;
mymessage.Body = richTextBox1.Text;
mymessage.IsBodyHtml = true;
mymessage.Priority = MailPriority.High;
SmtpClient mysmtp = new SmtpClient(smtpserver.Text);
System.Net.NetworkCredential cred = new System.Net.NetworkCredential(fromemail.Text, frompass.Text);
mysmtp.UseDefaultCredentials = false;
mysmtp.EnableSsl = true;
mysmtp.Credentials = cred;
mysmtp.Port = 587;

mysmtp.Send(mymessage);

sara_aryanfar
جمعه 25 شهریور 1390, 18:44 عصر
از این کد استفاده کنید سرعت قابل قبولی داره



System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
MailMessage mailMessage = new MailMessage();
mailMessage.From = new MailAddress("your gmail@gmail.com", "company name");
mailMessage.To.Add("your mail@yahoo.com");
mailMessage.Subject = textBox1.Text;
mailMessage.Body = textBox2.Text;

mailMessage.IsBodyHtml = false;
NetworkCredential credential = new NetworkCredential("your gmail@gmail.com", "********");
smtp.UseDefaultCredentials = false;
smtp.Credentials = credential;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Port = 587;
smtp.EnableSsl = true;

smtp.Host = "smtp.gmail.com";

smtp.Send(mailMessage);

faravaghi
جمعه 25 شهریور 1390, 23:45 عصر
سلام دوست عزیز،
این یه برنامه کوچیکه که من ازش تو یه برنامه استفاده کردم.
ارسال ایمیل به همراه Attachment است.
انشاء الله که مفید فایده باشه.

modern_amin
یک شنبه 27 شهریور 1390, 12:18 عصر
سلام دوست عزیز،
این یه برنامه کوچیکه که من ازش تو یه برنامه استفاده کردم.
ارسال ایمیل به همراه Attachment است.
انشاء الله که مفید فایده باشه.

خیلی ممنون ، ولی کجا pass رو از ما میگیره؟؟؟

RIG000
یک شنبه 27 شهریور 1390, 14:04 عصر
مهندس farvaghi من دیال وصلم به نت . و برنامه رو که اجرا میکنم و میخام send کنم میگه شما وصل نیستیت رو متد isconec.... گیره رو همون if . چرا ؟

faravaghi
یک شنبه 27 شهریور 1390, 22:16 عصر
سلام،
اون شرط واسه اینه که تست کنه شما به اینترنت وصل هستی یا نه؟
اگه وصل بودی بقیه ماجرا. حالا اگه شما نمی خوای اون حذف کن.
تو این تابع اگه دیده باشی میاد به چندتا سایت عمل Ping رو انجام میده اگه جواب Reply گرفت پس نتیجه میگیره شما وصلی، اگه نه پس اینترنت نداری! این کد از تو همین سایت برداشتم.
در ضمن یادتون باشه حتما پسورد ایمیل رو تو برنامه بزارین!
اگر هم خواستید با یه ایمیل دیگه مثل یاهو کار کنید و از اون بفرستید باید Port, Host, SSL رو حتما تنظیم کنید.
اگه بازم مشکلی بود من درخدمتم.

faravaghi
یک شنبه 27 شهریور 1390, 22:32 عصر
مجدد سلام،
UserName و Password رو تو خود برنامه میتونید تغییر بدین.
تو این برنامه Username رو تو قسمت ارسال از، تو برنامه تعیین میکنید و Password هم تو کدهای برنامه باید ست کنید. همینو میتونید یک تنظیمات براش بزارید و اونجا از کاربر یک بار بگیرین و دفعه های بعدی ازش استفاده کنید.


75464


مثل کاری که من تو یکی از نرم افزار هایی که نوشتم، انجام دادم. این تنظیمات رو هم میتونید تو یک فایل XML یا بانک زخیره کنید. اگه تو فایل ذخیره میکنید حتما پسورد رو به صورت کد دربیارید و برای استفاده دیکد کنید.



75465

http://barnamenevis.org/images/misc/pencil.png

akjavadzadeh
سه شنبه 25 بهمن 1390, 16:00 عصر
سلام دوست عزیز،

از 10 صبح تا ساعت 16:21 به دنبال چنین کدی میگشتم . چندتا پیداکردم ولی کار نکردند و وقتم را گرفتند

برنامه شما خوش دست بود و به درستی کار کرد . خیلی ممنون !

درضمن : اللهم صل علی محمد و آل محمد

farshadvl
سه شنبه 29 فروردین 1391, 13:15 عصر
برنامه خوبیه دستتون درد نکنه.نمیشه کاری کرد که محتوای متن به صوتر html هم بشه ارسال کرد؟ یعنی قالب html داشته باشه

faravaghi
سه شنبه 29 فروردین 1391, 16:27 عصر
سلام گرامی،
اگه یکم بهم فرصت بدین، اینم به روی چشم.
سرم کمی شلوغه.

به روی چشم.

farshadvl
سه شنبه 29 فروردین 1391, 17:16 عصر
ممنون. من کاری کردم که از یک لیست باکس ایمیل بخونه و یکی یکی بفرسته.واسه ارسال هر ایمیل یک مدت زمانی طول میکشه در همین حین برنامه میخام progressbar نشون بده واسه هر ایمیل.نحوه کار با progressbar چجوری میشه؟

faravaghi
چهارشنبه 30 فروردین 1391, 10:22 صبح
سلام دوباره،
بهتره شما با BackgroundWorker کار کنید.

اگه بگردین مطلب زیاد یافت می شود. من کارام سبک بشه اینم اضافه میکنم.
زکات علم یاد دادن آن به دیگران است.

faravaghi
سه شنبه 05 اردیبهشت 1391, 00:13 صبح
سلام خدمت تمامی اساتید،
در جواب درخواست دوستمون که فرمودند:

برنامه خوبیه دستتون درد نکنه.نمیشه کاری کرد که محتوای متن به صوتر html هم بشه ارسال کرد؟ یعنی قالب html داشته باشه
باید عرض کنم که شما برای می تونید این کار فقط و فقط یک خط کد به برنامه تون اضافه کنید تا در قالب HTML بتونید ایمیل ارسال کنید، و اما اون یک خط کد:

email_msg.IsBodyHtml = true;


من تکمیل شده برنامه رو هم براتون میزارم. در ضمن بگم برای این کار شما نیاز به یک Editor پیدا میکنید که فرمت HTML رو بهتون بده. یا می تونید HTML رو یه جای دیگه بسازید بعد توی TextBox کپی کنید و ارسال انجام بشه.
به همین راحتی.

از اینکه یکم وقفه بین سوال دوستمون تا جواب من افتاد از همگی عذرخواهی میکنم. انشاء الله که منو از دعای خیرتون بی بهره نفرمایید.

با تقدیم احترام

Mahmoud.Afrad
سه شنبه 05 اردیبهشت 1391, 00:29 صبح
ممنون. من کاری کردم که از یک لیست باکس ایمیل بخونه و یکی یکی بفرسته.واسه ارسال هر ایمیل یک مدت زمانی طول میکشه در همین حین برنامه میخام progressbar نشون بده واسه هر ایمیل.نحوه کار با progressbar چجوری میشه؟

اگر متن ایمیل یکسان هست و فقط آدرس ها فرق میکنه نیازی نیست برای هر آدرس یک بار send داشته باشید. از bcc و cc استفاده کنید:

farshadvl
سه شنبه 12 اردیبهشت 1391, 11:24 صبح
مرسی از هر دوی شما عزیزان

shahrokhimostafa
سه شنبه 12 اردیبهشت 1391, 17:23 عصر
چشمت ان شاء الله که سالم باشه دستت هم درد نکنه ، استفاده کردیم تشکر

samadblaj
چهارشنبه 07 تیر 1391, 05:17 صبح
چرا با استفاده از این برنامه ها نمیتونم ایمیل ارسال کنم؟ آیا باید تنظیمات خاصی رو انجام بدم؟ ممنون میشم راهنماییم کنید.

میگه به اینترنت متصل نیستید.

samadblaj
پنج شنبه 08 تیر 1391, 12:13 عصر
کسی نیست جواب بده میخوام از این کد ارسال ایمیل تو برنامه ام استفاده کنم میگه " اتصال قطه".

آیا نیاز به تنظیمات خاصی داره؟

faravaghi
جمعه 09 تیر 1391, 04:20 صبح
آیا نیاز به تنظیمات خاصی داره؟

سلام دوست عزیز، کدی که استفاده می کنی رو بزار تا بتونم کمک تون کنم. در ضمن برای تنظیمات، باید بگم که نه فقط نیاز داره شما مقادیر زیر رو داشته باشید:


آدرس میل سرور،
شماره پورت میل سرور
نام کاربری،
رمز عبور،
آیا جهت ارسال نیاز به SSL است؟

MohamadC
چهارشنبه 28 تیر 1391, 17:42 عصر
سلام و با تشکر از faravaghi عزیز
منم دارم رو این موضوع کار میکنم .
ولی جایی که من گیر دارم واسه ارسال از طریق سرور یاهو هستش که Exception رخ میده . ممنون میشم اگه کمک کنید .
اینم کدی هست که من نوشتم :

MailAddress From = new MailAddress("MyMail@yahoo.com");
MailAddress To = new MailAddress("YourMail@Gmail.com");
MailMessage Message = new MailMessage(From, To);
Message.Subject = "Subject";
Message.Body = "Welcome";
SmtpClient Client = new SmtpClient("smtp.mail.yahoo.com", 465);
NetworkCredential CR = new NetworkCredential("MyMail", "MyPassword");
Client.Credentials = CR;
Message.IsBodyHtml = true;
Client.EnableSsl = true;
Client.Send(Message);
Client.Dispose();

MohamadC
چهارشنبه 04 مرداد 1391, 23:25 عصر
هیچکس!!!! نبووود!!!

faravaghi
دوشنبه 09 مرداد 1391, 04:50 صبح
سلام و با تشکر از faravaghi عزیز
منم دارم رو این موضوع کار میکنم .
ولی جایی که من گیر دارم واسه ارسال از طریق سرور یاهو هستش که Exception رخ میده . ممنون میشم اگه کمک کنید .
اینم کدی هست که من نوشتم :

MailAddress From = new MailAddress("MyMail@yahoo.com");
MailAddress To = new MailAddress("YourMail@Gmail.com");
MailMessage Message = new MailMessage(From, To);
Message.Subject = "Subject";
Message.Body = "Welcome";
SmtpClient Client = new SmtpClient("smtp.mail.yahoo.com", 465);
NetworkCredential CR = new NetworkCredential("MyMail", "MyPassword");
Client.Credentials = CR;
Message.IsBodyHtml = true;
Client.EnableSsl = true;
Client.Send(Message);
Client.Dispose();


با سلام و قبولی طاعات و عبادات شما دوست عزیز،
اول از همه عذر خواهی میکنم از اینکه دیر به پست شما جواب میدم.
دوم اینکه با یکم جستجو میتونید جواب سوالتون رو به راحتی پیدا کنید.

شما برای اینکه از سرویس یاهو استفاده کنید برای اینکه بتونید ایمیل ارسال کنید باید تنظیمات مربوط به اتصال به سرور یاهو رو به درستی انجام بدین، که برای این کار باید(یا بهتر بگم میتونید) به روش ذیل عمل نمایید:


SMTP_Server = "smtp.mail.yahoo.com";
Server_Port = 587;
SSL = false;


که کد شما اینجوری میشه:



MailAddress From = new MailAddress("MyMail@yahoo.com");
MailAddress To = new MailAddress("YourMail@Gmail.com");
MailMessage Message = new MailMessage(From, To);
Message.Subject = "Subject";
Message.Body = "Welcome";
SmtpClient Client = new SmtpClient("smtp.mail.yahoo.com", 587);
NetworkCredential CR = new NetworkCredential("MyMail", "MyPassword");
Client.Credentials = CR;
Message.IsBodyHtml = true;
Client.EnableSsl = false;
Client.Send(Message);
Client.Dispose();




امیدوارم که این بتونه به شما دوست گرامی کمک کنه.
منبع:
http://stackoverflow.com/questions/5092235/c-sharp-smtp-email-sending-code-fails-for-yahoo-mail-but-works-fine-for-other-se
http://www.codeproject.com/Tips/165548/C-Code-snippet-to-send-an-Email-with-attachment-fr

NaserHadi
دوشنبه 09 مرداد 1391, 09:27 صبح
با سلام
آقای faravaghi عزیز آیا شما مطمئنید که با برنامه ای که شما فرستادید میشه یک صفحه html فرستاد ؟
چون من کد html را مستقیما در editor برنامه تون کپی کردم و بعد از ارسال به ایمیل مقصد در انجا به جای نمایش کامپایل شده کدها ی صفحه , کدها ی html به همان صورتی که تایپ شده بود ارسال شده
یعنی editor برنامه با کدهای html بصورت تکست معمولی رفتار می کنه

NaserHadi
سه شنبه 10 مرداد 1391, 09:22 صبح
در مورد ارسال یک صفحه html از طریق کدهای # C کسی اگه نظری داره لطفا بیان کنه
برنامه ای که آقای faravaghi در چند پست قبلی گذاشتن ظاهرا برای ارسال ایمیل به صورت html است ولی من که موفق نشدم

faravaghi
سه شنبه 10 مرداد 1391, 10:08 صبح
سلام گرامی،
باید خدمت شما و دیگر دوستان عرض کنم، شما وقتی توی ویرایشگر کدی می نویسید به عنوان متن ترجمه میشه نه کدهای HTML (اگه دقت کنید وقتی Paste میکنید به صورت کد نشون میده نه متن ترجمه شده)
به همین دلیل اگه شما کدهای وب رو از صفحه ای توی ویرایشگر قرار بدین به عنوان متن درنظر گرفته میشه نه HTML!
اگه شما بخواین کدی که ارسال میکنید به عنوان HTML ارسال بشه یا باید خودتون تایپ کنید یا مثل ویرایشگر های قدرتمند دیگه باید یه حالت ایجاد کنید که بشه کدهای HTML توی اون قرار داد.

شما میتونید بجای یک ویرایشگر از یک TextBox ساده استفاده کنید و HTML خودتون رو توی اون Paste کنید و ارسال رو انجام بدین.
اگه بازم مشکل دارین یا نتونستید تست کنید یه ایمیل به من بدین تا براتون نمونه ای ارسال کنم.

من درخدمتم.

faravaghi
سه شنبه 10 مرداد 1391, 10:21 صبح
با سلام،
تصویر اولی به صورتی است که کد HMTL رو در ویرایشگر Paste کردم و در ابتدا هم خودم به متن رو نوشتم.
تصویر دوم با استفاده از یک TextBox و قرار دادن همان کد HTML ارسال شده که مشخص به سلامتی رسیده!

NaserHadi
سه شنبه 10 مرداد 1391, 10:35 صبح
آقای faravaghi عزیز با سلام
از راهنمایی تون بی نهایت ممنونم تکست باکس مشکل را حل کرد ولی اگه این کار از یک editor اتفاق بیافته خیلی بهتر میشه
آیا editor برنامه نمونه که شما گذاشتید این قابلیت را نداره یا اصلا از هیچ ادیتور دیگری این امکان وجود نداره؟

faravaghi
چهارشنبه 11 مرداد 1391, 04:51 صبح
سلام،
این ویرایشگر این خصوصیت رو نداره مگر خودتون اضافه کنید و یا یک نمونه کامل تر رو پیدا و ازش استفاده کنید.
این کاری که من انجام دادم(ارسال ایمیل به صورت HTML) رو یکی از دوستان توی همین تاپیک درخواست کردن و من هم برای اینکه نشون بدم این کار شدنیه و نحوه انجام چیه بایک جستجوی ساده یک ویرایشگر ساده پیدا کردم، تا با اون بتونم کد HTML تولید کنم و ارسال انجام بشه.
حقیقتا زیاد وقت نگذاشتم. ولی با کمی جستجو میتونید به نتایج خوبی برسین.
شما باید دنبال ویرایشگری باشید که همانند ویرایشگرهای وب قابلیت این رو داشته باشه که بتونید کدهای HTML تولید شده رو ببینید(Show Source Code) و در این حالته که میشه یه کد خام HTML بهش اضافه بشه.

من اگه پیدا کنم توی همین تاپیک بهتون اطلاع میدم.
یا حق

NaserHadi
چهارشنبه 11 مرداد 1391, 09:38 صبح
آقای faravaghi با سلام مجدد از توضیحات کامل شما ممنونم
یک سوال دیگه هم دارم آیا برای فهمیدن عدم ارسال ایمیل راهی است مثلا من با همین کدها ایمیل ارسال میکنم و به درستی ارسال میشه ولی در بعضی شرایط کاملا مشابه ایمیل ارسال نمیشه مخصوصا وقتی از طریق cc یا bcc ارسال بشه
آیا راهی است که بشه فهمید از تعداد ایمیلهای ارسالی کدوم ارسال شده و کدوم نه و به عبارت بهتر deliver شدن در ایمیل وجود داره؟
با تشکر مجدد

faravaghi
چهارشنبه 11 مرداد 1391, 10:33 صبح
سلام،
از آنجایی که این امکان توی سرویس دهنده های بزرگ از جمله گوگل و یاهو نیست بعیده که این امکان وجود داشته باشه.
این بعید بودن مطلق نیست یعنی یکی ممکنه بعدا ادعا کنه از فلان روش میشه!

یادمه یکی از اساتیدمون(جناب آقای مهندس رساپور) می فرمودن:
تنها چیزی که در کامپیوتر(برنامه نویسی) غیرممکنه خود غیرممکنه!!

NaserHadi
چهارشنبه 11 مرداد 1391, 11:17 صبح
بازم ممنون از پاسخ دهی سریع و دقیق شما
من دقیقا مشکل رو میگم شاید راه دیگه ای هم باشه
من یک ایمیل مشخص و تکراری را به سه ایمیل مختلف از سه نوع سرور مختلف (yahoo,google,msn) و توسط bcc می فرستم و انتظار دارم که به هر سه ایمیل ارسال بشه ولی دفعه اول به ایمیل google ارسال نمیشه و بقیه ارسال میشه - دفعه دوم به هر سه - و دفعه سوم باز به یکی نمیشه
به نظر شما چیکار باید کرد و ایا در ارسال مشکلی هست بالاخره یه جای کار اشتباهی هست که اینطور میشه
با تشکر

faravaghi
پنج شنبه 12 مرداد 1391, 04:47 صبح
سلام،
دوست عزیز باید توجه شما رو به یک نکته جلب کنم و اون اینه که وقتی شما ایمیلی ارسال میکنید اون ایمیل از طریق سرویس دهنده انتخاب شده ارسال میشه و ربطی به من و شما نداره (تو نحوه ارسال!).
این یعنی اینکه شما فقط با این کدها به سرویس دهنده میگید من یه متن خاص رو می خوام به این افراد مشخص بفرستم، حال آنکه ارسال به عهده اون می باشد.
من تاحالا با Outlook کار نکردم ولی به نظر این برنامه تحت ویندوز هم چیزی به نام تایید ارسال نداشته باشه. این یعنی همون مطلبی که اول خدمتتون عرض کردم. یعنی هیچ گونه مسئولیتی در قبال رسیدن ایمیل به دریافت کننده ندارد. چون خودش سرویس دهنده نیست بلکه مصرف کننده است.

حالا اینکه ایملی که شما میفرستین به یکی نمیره و برای بقیه قابل دریافته شاید نتیجه اسپم شدن ایمیل شما توسط سرویس دهنده هدف (ایمیل کسی که بهش متنی رو ارسال کردین) باشه.
درمجموع فکر نکنم بشه به این راحتی از دریافت صحیح مطلع شد.
معمولا در اکثر اوقات ایمیل ها درصورتی که آدرس آنها صحیح باشد به دست گیرنده خواهد رسید.

من هم اگه مطلب تازه ای در این ضمینه پیدا کردم در اولین فرصت با اطلاع شما دوست عزیز میرسونم.
یا حق

ali.monje
جمعه 26 اردیبهشت 1393, 21:32 عصر
سلام و عرض ادب خدمت آقای Faravaghi عزیز
برنامه خیلی جالبی بود خیلی به دردم خود :تشویق:
بی نهایت ازتون سپاسگذارم
خدا اجرتون بده
میدونم از تاریخ آخرین ارسال این مطلب کلی گذشته ولی
یه خواهشی داشتم ازتون
اگه براتون مقدور بود لطفا راهنمایی کنید که چطور میشه:
اطلاعات اکانت ایمل مثل همین اکانتهای جیمیل یا یاهو رو از کاربر گرفت بعد با زدن دکمه ای ایمیل های دریافتی اون رو چک کرد و در صورت وجود به دیتابیس برنامه منتقل کرد و به کاربر به صورت آفلاین از دیتابیس نمایش داد؟
منتظر پاسخ گرمتون هستم

aliagamon
شنبه 27 اردیبهشت 1393, 00:03 صبح
روش اصلی این کار استفاده از پرتوکل IMAP هست شما با SMTP نمیتونین این کارو بکنین تو اینترنت سرچ کنین مثال زیاده در مورد این پرتکل:لبخند:
در مورد جیمیل از این فید هم میتونی استفاده کنی اخرین ایمیل های اینباکس رو میده https://mail.google.com/mail/feed/atom

arash_flag
شنبه 27 اردیبهشت 1393, 09:59 صبح
سلام به همه ی دوستان

MailAddress From = new MailAddress("MyMail@yahoo.com");
MailAddress To = new MailAddress("YourMail@Gmail.com");
MailMessage Message = new MailMessage(From, To);
Message.Subject = "Subject";
Message.Body = "Welcome";
SmtpClient Client = new SmtpClient("smtp.mail.yahoo.com", 587);
NetworkCredential CR = new NetworkCredential("MyMail", "MyPassword");
Client.Credentials = CR;
Message.IsBodyHtml = true;
Client.EnableSsl = false;
Client.Send(Message);
Client.Dispose();



دوستان خواهشا خط شماره 3و1و2 - 4و5 - رو برای من توضیح بدین یعنی چه؟

arash_flag
شنبه 27 اردیبهشت 1393, 10:07 صبح
سلام دوباره من این کد را تست کردم خطا داد . نمی دونم مشکل از کجاست؟
MailAddress From = new MailAddress("email khodam");
MailAddress To = new MailAddress(temail.Text );//email on shakhsi ke mikham barash befrestam

MailMessage Message = new MailMessage(From, To);

Message.Subject = tsubject.Text ;

Message.Body = tpara.Text + "_______>from>_______" + "email khodam";

SmtpClient Client = new SmtpClient("smtp.mail.yahoo.com", 587);

NetworkCredential CR = new NetworkCredential("email khodam", "pass khodam");

Client.Credentials = CR;

Message.IsBodyHtml = true;
Client.EnableSsl = false;
Client.Send(Message);
Client.Dispose();


این خطا رو میده
The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.1 Authentication required

aliagamon
شنبه 27 اردیبهشت 1393, 11:36 صبح
از این استفاده کنین قبل از خط 14
client.UseDefaultCredentials = false;

arash_flag
شنبه 27 اردیبهشت 1393, 11:41 صبح
داداش دمت گرم ک ج دادی اما باز همون خطا رو میده؟

aliagamon
شنبه 27 اردیبهشت 1393, 12:04 عصر
این ارور که میگین مربوط به درست نبودن یوزرنیم و پسورد و در نتیجه ناتوانی در اتصاله ار درست بودن ایمیل و پسوردتو و همینطور اینکه ایمیل خودتون حتما یاهو باشه درضمن چون پست قدیمیه یه بار تو خود یاهو ادرس و پورت smtp رو در بیارین ممکنه پورت رو عوض کرده باشن :لبخند:

ali.monje
شنبه 27 اردیبهشت 1393, 19:03 عصر
روش اصلی این کار استفاده از پرتوکل IMAP هست شما با SMTP نمیتونین این کارو بکنین تو اینترنت سرچ کنین مثال زیاده در مورد این پرتکل:لبخند:
در مورد جیمیل از این فید هم میتونی استفاده کنی اخرین ایمیل های اینباکس رو میده https://mail.google.com/mail/feed/atom

ممنون داداش جالب بود :لبخند:

ali.monje
شنبه 27 اردیبهشت 1393, 19:07 عصر
سلام دوباره من این کد را تست کردم خطا داد . نمی دونم مشکل از کجاست؟
MailAddress From = new MailAddress("email khodam");
MailAddress To = new MailAddress(temail.Text );//email on shakhsi ke mikham barash befrestam

MailMessage Message = new MailMessage(From, To);

Message.Subject = tsubject.Text ;

Message.Body = tpara.Text + "_______>from>_______" + "email khodam";

SmtpClient Client = new SmtpClient("smtp.mail.yahoo.com", 587);

NetworkCredential CR = new NetworkCredential("email khodam", "pass khodam");

Client.Credentials = CR;

Message.IsBodyHtml = true;
Client.EnableSsl = false;
Client.Send(Message);
Client.Dispose();


این خطا رو میده
The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.1 Authentication required

دوست عزیز من این کد رو تست کردم برای اکانت یاهو جواب داد یه بار تست کن

@liReza11800
دوشنبه 21 دی 1394, 09:43 صبح
سلام دوستان
مشکل این کد من چیه ؟ که ارسال انجام نمیشه و میگه پارامتری خالی مونده

private static string host, port, user, pass, from, name, subject, body, count;
private static string[] bcc = null;


private static Thread t1 = new Thread(new ThreadStart(thread));


static private void thread()
{
Send(host, port, user, pass, from, name, bcc, subject, body, count);
}
private void btnSend_Click(object sender, EventArgs e)
{
host = txthost.Text.Trim();
port = txtport.Text.Trim();
user = txtuser.Text.Trim();
pass = txtpass.Text.Trim();
name = txtName.Text.Trim();
from = txtfrom.Text.Trim();
string[] bcc = rtxtBcc.Text.Split(',' , ';' , '\t' , '\n');


//آدرس هایی را که به فرمت ایمیل نباشند را تهی ذخیره می کنیم


for (int i = 0; i < bcc.Length; i++)
if (!ValidateEmail(bcc[i].Trim()))
bcc[i] = string.Empty;


subject = txtsubject.Text;
body = richtxtBody.Text;
count = "1";


if (!t1.IsAlive)
{
t1 = new Thread(new ThreadStart(thread));
t1.Start();
}
}
private void btnPause_Click(object sender, EventArgs e)
{
if (t1.IsAlive && t1.ThreadState == ThreadState.Running)
t1.Suspend();
}


private void btnResume_Click(object sender, EventArgs e)
{
if (t1.ThreadState == ThreadState.Suspended)
t1.Resume();
}


private static void Send(string _Host, string _port, string _User, string _Pass, string _From,string _Name, string[] _Bcc, string _Subject, string _Body, string _Count)
{
MailMessage mail = new MailMessage();
string EmailTo = String.Empty;
string EmailFrom = string.Empty;
Int64 count = Convert.ToInt64(_Count);


SmtpClient SmtpClient = new SmtpClient();
SmtpClient.Credentials = new System.Net.NetworkCredential(_User, _Pass);
SmtpClient.Host = _Host;
SmtpClient.Port = Convert.ToInt16(_port);
SmtpClient.EnableSsl = true;


try
{
String[] addr = EmailTo.Split(',' , ';' , '\t' , '\n');
mail.From = new MailAddress(_From, _Name, System.Text.Encoding.UTF8);
Byte i;
for (i = 0; i < addr.Length; i++)
if (addr[i] != string.Empty)
mail.To.Add(addr[i].Trim());




if (_Bcc != null)
for (i = 0; i < _Bcc.Length; i++)
if (_Bcc[i] != string.Empty)
mail.Bcc.Add(_Bcc[i].Trim());


mail.Subject = _Subject;
mail.Body = _Body;
mail.IsBodyHtml = true;


mail.ReplyTo = new MailAddress(EmailTo);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}


for (int j = 0; j < count; j++)
{
try
{
//ابتدا چک می کنیم سیستم به اینترنت متصل هست یا نه
if (InternetConnection.IsConnectedToInternet())
{
SmtpClient.Send(mail);
if (j == count - 1)
MessageBox.Show("ایمیل ارسال شد");
}
else
MessageBox.Show("به اینترنت متصل نیستید");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}


public static bool ValidateEmail(string sEmail)
{
Regex exp = new Regex(@"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
Match m = exp.Match(sEmail);


if (m.Success && m.Value.Equals(sEmail))
return true;
else
return false;
}

batman1
چهارشنبه 23 دی 1394, 01:03 صبح
دوستان،من با این دستورات،ایمیل رو میفرستم،اما هردفعه یه خطایی میده و میگه ارسال ایمیل ناموفق.
مشکل کجاست؟!
string str_from_address = txtFrom.Text;
string str_name = txtName.Text;
string str_to_address = txtTo.Text;
MailMessage email_msg = new MailMessage();
email_msg.From = new MailAddress(str_from_address, str_name);
email_msg.Sender = new MailAddress(str_from_address, str_name);
email_msg.To.Add(str_to_address);
email_msg.Subject = txtSubject.Text;
email_msg.IsBodyHtml = true;
SmtpClient mail_client = new SmtpClient();
NetworkCredential network_cdr = new NetworkCredential();
network_cdr.UserName = "ahmadalizade47@gmail.com";
network_cdr.Password = "رمزعبور";
mail_client.Credentials = network_cdr;
mail_client.Port = 587;
mail_client.Host = "SMTP.GMAIL.COM";
mail_client.EnableSsl = true;
mail_client.Send(email_msg);

mrsp1988
چهارشنبه 23 دی 1394, 20:17 عصر
سلام دوستان من اکثر سورس ها رو دانلود کردم ولی کار نمیکردن
نمیدونم آیا امکان دارم چون از طریق شبکه اینترنت دارم برنامه ها کار نمیکردن

batman1
پنج شنبه 24 دی 1394, 17:11 عصر
این کدی که من زدم درسته.
با ایمیل دیگه امتحان کردم،شد،اما با ایمیل خودم نمیشه.
میگن باید مجوز امنیتی بدیی.
نمیدونم والا.

kingmjl
جمعه 25 دی 1394, 13:56 عصر
با سلام

من بیشتر کد های ارسال ایمیل رو تست کردم اما هیچ کدوم کار نکردن :ناراحت:

اگه ممکن هست کمکم کنید

ارسال ایمیل با سرور جیمیل


با تشکر :قلب:

mosafer_deltang
چهارشنبه 15 اردیبهشت 1395, 09:10 صبح
سلام
برای رفع خطای زیر :
The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.1 Authentication required

باید برید توی تنظیمات ایمیلتون و گزینه Access for less secure apps را Turn on کنید. لینک زیر :
https://www.google.com/settings/security/lesssecureapps

که با این کار طبیعتا امنیت ایمیلتون کمتر میشه

prans68
چهارشنبه 15 اردیبهشت 1395, 10:08 صبح
ssl ست کنید.
client.UseDefaultCredentials = true;
client.EnableSsl = true;

mosafer_deltang
پنج شنبه 16 اردیبهشت 1395, 08:21 صبح
ssl ست کنید.
client.UseDefaultCredentials = true;
client.EnableSsl = true;

اگه بخواین از سرور SMTP گوگل استفاده کنین حتما باید Credentials رو set کنین. یعنی ایمیل و پسوردش لازمه
بعضی SMTP سرورها هستند که Credentials لازم ندارن. اگه سرچ کنین آدرس و پورتشون پیدا می کنین

amirali001
پنج شنبه 16 اردیبهشت 1395, 09:04 صبح
اگه بخواین از سرور SMTP گوگل استفاده کنین حتما باید Credentials رو set کنین. یعنی ایمیل و پسوردش لازمه
بعضی SMTP سرورها هستند که Credentials لازم ندارن. اگه سرچ کنین آدرس و پورتشون پیدا می کنین

میشه چندتا از این سرورها بگید که بدون یوزرنیم پسورد بشه ایمیل فرستاد ؟

mosafer_deltang
پنج شنبه 16 اردیبهشت 1395, 09:41 صبح
میشه چندتا از این سرورها بگید که بدون یوزرنیم پسورد بشه ایمیل فرستاد ؟

یه سرچ بزنید پیدا می کنین
نمونش:
http://help.unc.edu/help/sending-email-without-smtp-authentication/