PDA

View Full Version : راهنمایی برای ارسال ایمیل گروهی در دات نت



majid_darab
پنج شنبه 03 شهریور 1390, 11:21 صبح
با سلام و احترام خدمت دوستان محترم :
در این فروم تاپیک های زیادی رو دیدم که در مورد ارسال ایمیل گروهی بحث می کردند.
اما اکثر اونها مربوط به زبان php می شدند و یا تاریخ آنها مربوط به مدت ها قبل بود و یا اینکه به صورت مقطعی به موضوع پرداخته بودند.
این تاپیک رو زدم تا با همیاری دوستان عزیز حق مطلب در مورد آن ادا شود و مرجع کاملی برای همه دوستان باشد.

سوالات من و به طبع آن سوالات اکثر دوستان در این زمینه به قرار زیرند :
1-
آیا برای ارسال ایمیل گروهی محدودیت وجود دارد ؟
اگر وجود دارد چه محدودیتی ؟
(الف : منظور سمت local و آی اس پی مورد استفاده)
و
(ب : سمت سرور -> آیا در این حالت امکان بلاک شدن آی پی سرور وجود دارد؟)
2-
بهترین کد و روش عملکرد برای ارسال ایمیل گروهی چیست ؟
به نحوی که ایمیل های ارسالی تماماً به inbox ارسال شوند...
من نمونه کدی که برای ارسال ایمیل تکی استفاده می کردم رو در زیر گذاشتم!
اگر مقدور است تغییرات لازم روی این کد اعمال گردد.
3-
نحوه بدست آوردن دیتابیسی کامل و به روز از ایمیل های ایرانیان چیست ؟
4-
آیا احتمال بلاک شدن ایمیل ارسال کننده وجود دارد و اینکه آیا جدای از سیستم سرور و لکال آیا ممکن است ایمیل ارسال کننده دارای محدودیت ارسال باشد؟
(چنانچه تاپیک و یا مرجع به روزی در مورد قوانین ارسال وجود دارد ، لطفاً معرفی نمایید)
(ایمیل اراسال کننده -> یاهو یا جی میل)


متدی که برای ارسال ایمیل تکی استفاده می کردم به صورت زیر بود :


private void SendEmail(string FromEmail, string FromExplain, string To, string Subject, string htmlEmailBody, string SenderEmail, string SenderPassword)
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress(FromEmail, FromExplain, System.Text.Encoding.UTF8);
mail.To.Add(To);
mail.To.Add("bla bla bla");
mail.To.Add("bla bla bla");
mail.To.Add("bla bla bla");

mail.SubjectEncoding = System.Text.Encoding.UTF8;
mail.Subject = Subject;
//mail.BodyFormat = MailFormat.Html; -> This Is For .Net 1.1
mail.IsBodyHtml = true;
mail.BodyEncoding = System.Text.Encoding.UTF8;
mail.Body = htmlEmailBody;

SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new System.Net.NetworkCredential(SenderEmail, SenderPassword);
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
//smtp.Port = 25;
smtp.Timeout = 18000000;

try
{
smtp.Send(mail);

//Response.Write("ارسال با موفّقیّت انجام شد.");
Page.ClientScript.RegisterStartupScript(this.GetTy pe(), "EmailSuccessfully", "EmailSuccessfully();", true);
}

catch (System.Net.Mail.SmtpException exp)
{
//Response.Write(exp.ToString());
Page.ClientScript.RegisterStartupScript(this.GetTy pe(), "EmailFailed", "EmailFailed();", true);
}
}


حال فرض کنیم آدرس های مزبور برای ارسال در دیتابیس قرار دارند...
5-آیا برای ارسال ایمیل به این آدرس ها بهتر است از حلقه for استفاده نماییم و یا اینکه از قسمت های bcc و cc کد مورد نظر استفاده کنیم ؟
(آیا برای این قسمتها محدودیت وجود ندارد)

تعداد ایمیل ارسالی = فرضاً یک میلیون در روز

با تشکر از حسن توجّه شما
مجید داراب

Alireza_Salehi
پنج شنبه 03 شهریور 1390, 12:25 عصر
1. همواره دو محدودیت برای ارسال ایمیل انبوه وجود دارد:
1.1. محدودیت سرور ارسال کننده
1.2. محدودیت سرور گیرنده

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

سرور دریافت کننده هم همیشه محدودیتی برای دریافت ایمیل لحاظ میکند، مثلا یاهو اگر در یک دقیقه بیش از 10 ایمیل از یک آی پی دریافت کند آن آی پی را برای مدتی مسدود می کند ، همین طور برای جیمیل و لایو و ... برای جلوگیری از این مسئله باید به بخش postmaster سرور های مذکور مراجعه کرده و فرم BulkMailer آنها را تکمیل کرده و برایشان ارسال کنید، در صورتی که آی پی ایران داشته باشید کاری برایتان انجام نمیدهند بنابراین این محدودیت تنها درصورت داشتن میل سرور با آی پی غیر ایرانی قابل رفع است.

2. کد خاصی ندارد ، همین کدهای معمول جوابگو هستند

3. همچین دیتابیسی وجود ندارد، تبلیغات موجود در اینترنت همگی دروغ محض است، صرفا وب سایت هایی که تعداد کاربران فعال زیادی داشته باشند دارای چنین دیتابیسی هستند، مثل کلوب، بلاگفا و ....
می توانید چند مورد از این دیتابیس ها ی موجود را باقیمتی نازل بخرید همگی را merge کنید بعد یک بار ایمیل بفرستید، ایمیل های بدرد نخور مشخص می شود. (در صورتی که ایمیلی وجود نداشت هباشد یا غیر فعال باشد یاهو و جیمیل ایمیلی با محتوای مشخص برگشت می دهند.)

4. ایمیل ارسال کننده در صورتی بلاک می شود که خیلی خیلی ازش شکایت بشه، معمولا ارسال کننده ها صرفا اسپم میشن نه بلاک.

majid_darab
پنج شنبه 03 شهریور 1390, 13:16 عصر
با تشکر از استاد صالحی :

می شود چند نمونه از این دیتابیسها رو معرفی نمایید!

6-سوال دیگری که می خواستم در این تاپیک عنوان کنم در مورد validation لیست ایمیل مورد نظر می باشد.
فرض کنیم لیستی داریم که دارای ایمیل های غیر ولید می باشد.
خوب به راحتی میشه با regular experssion این ایمیل ها رو شناسایی و پاک کرد.
اما پس از بررسی ولید بودن ایمیل چگونه می توانم تشخیص بدهم که آیا ایمیلی وجود دارد یا خیر ، بدون این که به فرد مورد نظر ایمیل ارسال کنم؟
(در حالت عادی وقتی ایمیلی به آدرس ولیدی که وجود ندارد ارسال می گردد Mail Delivery دریافت می گردد و این در حالی ست که حتما باید ایمیلی به آدرس مورد نظر ارسال شود.)
این موضوع چگونه توسط کد قابل حل است بدون اینکه ایمیلی به طرف ارسال گردد؟

7-آیا بهتر نیست برای ارسال ایمیل گروهی از نرم افزار win base یا سایت های آنلاین استفاده نماییم؟
اگر چند نمونه معرفی نمایید ممنون می شوم ، که دارای ویژگی های زیر باشند :
*قابلیت دریافت لیست ایمیل (import)
*عدم محدودیت تعداد ارسال
*ساپورت کردن فونت فارسی
*امکان ارسال اچ تی ام ال
*ارسال سریع

8-معمولاً ارسال ایمیل های تعداد بالا چقدر زمان می برد ؟


با تشکر از حسن توجه شما

Alireza_Salehi
جمعه 04 شهریور 1390, 11:13 صبح
لیست ایمیل:
در اینترنت ارسال ایمیل انبوه را جستجو کنید ، تعداد زیادی شرکت! هستند که این کار را انجام میدهند و لیست ایمیل ها را نیز به قیمت نازل در حدود 10000 تومان تا 50000 توما نبه شما می دهند، البته اکثر این چنین ایمیل هایی عملا غیر فعال است.

6. برای اعتبار سنجی یک آدرس ایمیل چند مرحله وجود دارد:
6.1. اول فرمت صحیحی آدرس ایمیل است که چند نمونه از بهترین Regular Expression ها را در این آدرس می توانید پیدا کنید:http://www.regular-expressions.info/email.html
6.2. دوم اعتبار سنجی دامنه مذکور است، که با ارسال یک درخواست ساده (ping) به دامنه مذکور قابل تشخیص است. برای فهمیدن اینکه دامنه ای که کاربر وارد کرده اصلا وجود دارد یا نه. http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping.aspx
6.3. سوم بررسی این که آیا میل سروری در دامنه وارد شده وجود دارد؟ این کار با بررسی رکورد MX در سرور مذکور بررسی می شود.
6.4. چهارم بررسی این که آیا آدرس ایمیل وارد شده در میل سرور مذکور معتبر است؟ فعال است؟ یا .... این مورد بستگی به میل سرور مذکور دارد، تا جایی که من اطلاع دارم بعضی میل سرور ها بدون ارسال ایمیل پاسخ هایی برمی گردانند که نشان دهنده عدم وجود یا غیر فعال بودن یک آدرس است، که البته این وضعیت متغییر است و ممکن است این قابلیت در دوره هایی فعال و یا غیر فعال باشد. یا فرمت پیام های آن تغییر کنند. کلا روش استانداردی نیست.
http://stackoverflow.com/questions/565504/how-to-check-if-an-email-address-exists-without-sending-an-email
http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/


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

8. اگر به عنوان Bulk Mailer در یاهو و ... ثبت نام نکرده باشید هر دقیقه 10 ایمیل در غیر این صورت تقریبا نامحدود.

البته می توانید به خیل عظیم مزاحمان اینترنتی بپیوندید و با استفاده از گروه های یاهو و جیمیل و تعویض مداوم آدرس ارسال کننده اشک مردم رو دربیارید. طرف میل باکسش رو باز میکنه میبینه تو یک ساعت 1000 تا ایمیل تبلیغاتی گرفته....

برای این که بدانید برای ارسال ایمیل با فرمت HTML چه مواردی مجاز است و ایمیل کلاینت ها توانایی نمایش چه مواردی را دارند به این آدرس مراجعه کنید:
http://www.email-standards.org/

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