PDA

View Full Version : آموزش: ارسال جدید ترین پست ها به ایمیل کاربران



fakhravari
چهارشنبه 09 فروردین 1391, 22:18 عصر
خیلی دیده بودم ارسال گروهی جدید ترین مطالب سایت میخواستین برای کاربران سایت.

1) گرفتن اطلاعات ایمیل کاربران
#region اطلاعات ایمیل
public DataTable All_Email()
{
SqlConnection con = new SqlConnection(DAL.ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT email from [email]";
con.Open();

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();

da.Fill(dt);
con.Close();
return dt;
}
#endregion

2) گرفتن اطلاعات پست ها
#region اطلاعات جدید
public DataTable All_Topik()
{
SqlConnection con = new SqlConnection(DAL.ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT top(10) Message,Subject from B_Topics order by TopicID desc";
con.Open();

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();

da.Fill(dt);
con.Close();
return dt;
}
#endregion

3) تابع ارسال ایمیل
#region ارسال ایمیل
public void send(string Body, string Subj, string send, string resv)
{
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(send, resv);
mail.Body = Body;
mail.Subject = Subj;
mail.BodyEncoding = Encoding.UTF8;
mail.SubjectEncoding = Encoding.UTF8;
mail.IsBodyHtml = true;

SmtpClient c = new SmtpClient();
c.Host = "mail.a-velayat.com";
c.Send(mail);
}
#endregion

4) دکمه ارسال
protected void Button3_Click(object sender, EventArgs e)
{
DataTable dt = All_Topik();
DataTable dt2 = All_Email();
int ct = All_Topik().Rows.Count;
int ce = All_Email().Rows.Count;

for (int i = 0; i < ct; i++)
{
for (int b = 0; b < ce; b++)
{
send(dt.Rows[i]["Message"].ToString(), dt.Rows[i]["Subject"].ToString(), "fakhravary@yahoo.com", dt2.Rows[b]["email"].ToString());
}

}
}

تنظیم در کنفیگ
<system.net>
<mailSettings>
<smtp from="fakhr@a-velayat.com">
<network host="mail.a-velayat.com" password="tgkbvhhghj" userName="fakhr@a-velayat.com"/>
</smtp>
</mailSettings>
</system.net>


:لبخند:
میتونید در یه UpdatePanel بزارید برای نمایش مدت زمان

crazy_1892
پنج شنبه 10 فروردین 1391, 09:27 صبح
سلام آقای فخراوری ، اگه بخوایم تنظیم کنیم که هفته ای یه بار به صورت خودکار اینکار را انجام بده باید جی کار کنیم

dorparasti
پنج شنبه 10 فروردین 1391, 09:56 صبح
جالب بود . ممنون

اما نحوه ارسال ایمیل تون به نظر من بهینه نیست . می تونید آدرس ایمیل ها رو در قسمت CC و یا BCC اضافه کنید . با اینکار تنها یکبار تابع ایمیل رو فراخوانی می کنید و کار ارسال ایمیلهای چتدگانه رو به خود ایمیل واگذار می کنید .

Saber_Fatholahi
پنج شنبه 10 فروردین 1391, 11:34 صبح
سلام دوست من کار شما قابل تقدیره اما همانطور که دوستان گفتند
1- می تونین ایمیل توی قسمت BCC بنویسید
2- اطلاعات تاپیک های جدید برای همه ثابته می تونین یکبار بسازین بعد توی Body ایمیل قرار بدین اینجوری هم سرعت اجراتون میره بالا

در این روش شما به فرض اگر 1000 کاربر داشته باشید توی اون حلقه 10000 بار کد اجرا میشه

موفق و موید باشید

hamid_shrk
پنج شنبه 10 فروردین 1391, 11:41 صبح
در این روش شما به فرض اگر 1000 کاربر داشته باشید توی اون حلقه 10000 بار کد اجرا میشه

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

mohsen.nsb44
پنج شنبه 10 فروردین 1391, 12:31 عصر
سلام دوست من کار شما قابل تقدیره اما همانطور که دوستان گفتند
1- می تونین ایمیل توی قسمت BCC بنویسید
2- اطلاعات تاپیک های جدید برای همه ثابته می تونین یکبار بسازین بعد توی Body ایمیل قرار بدین اینجوری هم سرعت اجراتون میره بالا

در این روش شما به فرض اگر 1000 کاربر داشته باشید توی اون حلقه 10000 بار کد اجرا میشه

موفق و موید باشید
اقای فخاری محبت کردن و مثالی جهت اموزش قرار دادن از انجا که امکان ارسال ایمیل ها با کد ایشان امکان پذیر نیست میشه شما هم مثالی از روش خودتان در این تاپیک قرار بدید

kingmech
پنج شنبه 10 فروردین 1391, 12:46 عصر
میشه 10-20 تا اکانت جیمیل ساخت :d از اونا تو برنامه استفاده کرد :d

fakhravari
پنج شنبه 10 فروردین 1391, 17:50 عصر
ممنون از همگی.
بله دیگه ماهم تازه کاریم و کدامونم آبکی .:بامزه:
mohsen.nsb44 (http://barnamenevis.org/member.php?141525-mohsen.nsb44)
بنده فخراوری هستم محمد حسین
درسته کد بهیته نیست اما کار میده.
خودم که روی هاستم تست میکردم با 3 تا کاربر و 20 مطلب اخر تست کرده بودم. اره برای 300 کاربر کد جالب نیست bcc باید بفرستی.

hamid_shrk
پنج شنبه 10 فروردین 1391, 19:03 عصر
برای زمانبندی یکی از دوستان یک مقاله بسیار جالب ارائه داده بودن که من لینکش رو تو شرکت دارم ، هرچقدر هم سرچ میکنم پیداش نمیکنم .:خجالت:
فکر میکنم مدیر محترم آقای raziee بدونن.

crazy_1892
پنج شنبه 10 فروردین 1391, 19:27 عصر
برای زمانبندی یکی از دوستان یک مقاله بسیار جالب ارائه داده بودن که من لینکش رو تو شرکت دارم ، هرچقدر هم سرچ میکنم پیداش نمیکنم .:خجالت:
فکر میکنم مدیر محترم آقای raziee بدونن.


جناب آقای raziee میشه در این مورد کمک کنید

hamid_shrk
پنج شنبه 10 فروردین 1391, 19:36 عصر
لینک رو پیدا کردم ، بفرمایید :
http://barnamenevis.org/showthread.php?86446-WebTaskScheduler-%D8%A7%D9%86%D8%AC%D8%A7%D9%85-%DA%A9%D8%A7%D8%B1%D9%87%D8%A7-%D8%AF%D8%B1-%D8%B2%D9%85%D8%A7%D9%86-%D9%85%D8%B4%D8%AE%D8%B5-%28%D8%AE%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%88-...%29&highlight=%D8%B2%D9%85%D8%A7%D9%86%D8%A8%D9%86%D8% AF%DB%8C+%D8%A7%D9%86%D8%AC%D8%A7%D9%85+%D8%B9%D9% 85%D9%84%DB%8C%D8%A7%D8%AA+%D8%AF%D8%B1+%D9%88%D8% A8

mohsen.nsb44
پنج شنبه 10 فروردین 1391, 20:07 عصر
ممنون از همگی.
بله دیگه ماهم تازه کاریم و کدامونم آبکی .:بامزه:
mohsen.nsb44 (http://barnamenevis.org/member.php?141525-mohsen.nsb44)
بنده فخراوری هستم محمد حسین
درسته کد بهیته نیست اما کار میده.
خودم که روی هاستم تست میکردم با 3 تا کاربر و 20 مطلب اخر تست کرده بودم. اره برای 300 کاربر کد جالب نیست bcc باید بفرستی.
در مورد زمان بندی اطلاعاتی ندارم = اگر دوستان زحمت این قسمت بکشند.
جناب فخاری بنده جسارت نکردم حتی از بابت اینکه مثالی جهت اموزش قرار دادین تشکر میکنم و حتی تو پستمم گفتم که محبت کردین مثالی جهت اموزش قرار دادین صرفا به خاطر اینکه کد شما برای کاربران زیاد مثلا 500 کاربر امکان پذیر نیست از دوستان خواستم مثالی از روش پیشنهادی خودشان قرار دهند امیدوارم از حرف های بنده ناراحت نشده باشین نیت فقط دیدن روش های دیگر دوستان بود

fakhravari
جمعه 11 فروردین 1391, 01:03 صبح
بله منم که چیز خاصی نگفتم.:بامزه:
خوب دوستان کد بهینه تر کنید .

fakhravari
جمعه 11 فروردین 1391, 22:08 عصر
با سلام
کد تغیر دادم و کپی رو نوشت دادم به bcc , cc اما بعد ارسال اولین رکورد
که دادم به
MailMessage mail = new MailMessage("fakhravary@yahoo.com", dt2.Rows[0]["email"].ToString());
درسته و به Inbox میره ولی
for (int b = 1; b < ce; b++)
{
mail.CC.Add(dt2.Rows[b]["email"].ToString());
// bcc
// to
// برسی کردم
}
به Spam میره. پیشنهاد شما چیست؟
gmail
> 5 به 5 میره مطالب میره inbox,spam
hotmail
4,5 میره inbox, spam
protected void Button3_Click(object sender, EventArgs e)
{
DataTable dt = All_Topik();
DataTable dt2 = All_Email();
int ct = All_Topik().Rows.Count;
int ce = All_Email().Rows.Count;

for (int i = 0; i < ct; i++)
{
string msg = dt.Rows[i]["Message"].ToString();
string sub = dt.Rows[i]["Subject"].ToString();

MailMessage mail = new MailMessage("fakhravary@yahoo.com", dt2.Rows[0]["email"].ToString());
mail.Body = msg;
mail.Subject = sub;
mail.BodyEncoding = Encoding.UTF8;
mail.SubjectEncoding = Encoding.UTF8;
mail.IsBodyHtml = true;

for (int b = 1; b < ce; b++)
{
mail.CC.Add(dt2.Rows[b]["email"].ToString());
}

SmtpClient c = new SmtpClient();
c.Host = "mail.a-velayat.com";
c.Send(mail);
}
}

fakhravari
شنبه 12 فروردین 1391, 16:44 عصر
دوستان پیشنهاد شما چی؟؟
من برسی کردم تاپیک مرجع ارسال ایمیل ولی به نتیجه ای نرسیدم.
ارسال body تبدیل به spam نمیشه ولی to اول نمیشه ولی بعدیا میره به spam
cc,bcc,to
مجوز هایی میخوا برای ارسال؟

crazy_1892
شنبه 12 فروردین 1391, 19:36 عصر
دوست عزیز من هم همیچین مشکلی داشتم وقتی تعداد ایمیل زیاد بودspam میشد با مدیریت هاست تماس گرفتم بعد از دو روز برام درست کرد

fakhravari
شنبه 12 فروردین 1391, 19:50 عصر
خوب تیکت زدم میریت تا جوابش بیاد.
خوب اگر درست بشه کد بهینه است دیگه چون bcc ایمیل که رونوشت ایمیل میشه ارسال میشه.

reza4359
یک شنبه 13 فروردین 1391, 00:30 صبح
آقای فخر آوری میشه مثال عملی این رو بذارید؟
ممنون میشم

fakhravari
یک شنبه 13 فروردین 1391, 11:06 صبح
آقای فخر آوری میشه مثال عملی این رو بذارید؟
ممنون میشم

sample .

reza4359
سه شنبه 15 فروردین 1391, 18:49 عصر
آقای فخر آوری من از کد شما روی هاست استفاده کردم جواب نمیده !!!
من با یک insert آدرس ایمیل رو از کاربر میگیرم و با کد شما اطلاعات رو واکشی میکنم و میفرستم ولی ایمیلی دریافت نمیکنم!

fakhravari
سه شنبه 15 فروردین 1391, 19:09 عصر
توی این پست شما مشکل دارید http://barnamenevis.org/showthread.php?334859-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-send-%D8%B4%D8%AF%D9%86-%D8%A7%DB%8C%D9%85%DB%8C%D9%84
روی سمپل من الانشم یوزر و پسورد ها فعال یعنی ایمیل میشه ارسال کرد .

mahmood_4246
چهارشنبه 16 فروردین 1391, 10:55 صبح
کدی که برادر فخراوری گذاشته تموم ایمیل ها رو به سمت spam هدایت میکنه .. با سرور باید همانگ باشید .. باید ببینید در 1 دقیقه چند تا ایمیل اجازه ارسال میده .. چون سرور تو لیست spam میفته

fakhravari
چهارشنبه 16 فروردین 1391, 11:42 صبح
جواب مدیریت
همانطور که قبلا نیز پاسخ داده شد، این تنظیمات مربوط به سیاست های ضد اسپم میل سرور گیرنده است و ارتباطی با سرویس ایمیل فرستنده نخواهد داشت. لذا تنظیم تاثیر گذاری از سمت میل سرور فرستنده وجود ندارد. لازم به ذکر است که در سرویسهای ایران هاست ارسال ایمیل تبلیغاتی و اسپم به هیچ وجه مجاز نبوده و پشتیبانی نمی گردد. ضمنا لطفا از ارسال سوال و ایمیل تکراری خودداری فرمایید.


در زمینه قوانین ایران هاست در رابطه با ارسال ایمیل ، اعمال زیر تخطی از این قوانین محسوب خواهند شد:
* ارسال هرزنامه (Spam ) عمدا ویا سهوا (ملاک، گزارش Spam cop یا سایتهای مشابه و یا بررسی تیم فنی شرکت می باشد) حتی اگر از سرویس میل سرویس دهنده ثالثی استفاده شده باشد.
* ارسال ایمیل بصورت گروهی و تعداد بالا (حداکثر 1000 ایمیل در روز و 50 ایمیل در 10 دقیقه مجاز می باشد به شرط آنکه کلیه گیرندگان ایمیلها، خودشان درخواست دریافت ایمیل از خریدار را داشته و آدرس و توضیح نحوه لغو عضویت به زبان انگلیسی در متن ایمیل وجود داشته باشد).
لازم به ذکر است که قوانین ایران هاست در سایت به وضوح ذکر شده و ثبت نام و خرید سرویس به منزله پذیرش این قوانین است .

fakhravari
چهارشنبه 16 فروردین 1391, 13:44 عصر
سلام آقای فخراوری ، اگه بخوایم تنظیم کنیم که هفته ای یه بار به صورت خودکار اینکار را انجام بده باید جی کار کنیم

با سلام
یه نمونه.
اول این پست برسی کنید بعد سمپل منو ببینید.
این سمپل در زمان اجرای هر 5 ثانیه یه insert میزنه به بانک که شما میتونید به جای ان تابع ایمیل بزارید .
http://barnamenevis.org/showthread.php?86446-WebTaskScheduler-%D8%A7%D9%86%D8%AC%D8%A7%D9%85-%DA%A9%D8%A7%D8%B1%D9%87%D8%A7-%D8%AF%D8%B1-%D8%B2%D9%85%D8%A7%D9%86-%D9%85%D8%B4%D8%AE%D8%B5-%28%D8%AE%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%88-...%29&highlight=%D8%B2%D9%85%D8%A7%D9%86%D8%A8%D9%86%D8% AF%DB%8C+%D8%A7%D9%86%D8%AC%D8%A7%D9%85+%D8%B9%D9% 85%D9%84%DB%8C%D8%A7%D8%AA+%D8%AF%D8%B1+%D9%88%D8% A8

فقط در زمان run در جدول email زمان زخیره میشه که اگر دکمه send بزنید erro میده . زمان از جدول email دلیت کنید درست میشه.

reza4359
چهارشنبه 16 فروردین 1391, 14:42 عصر
خب دوستان به لطف خدا و کمک دوستان مشکل حل شد از همگی خصوصا آقای فخر آوری ممنون:لبخندساده:

betisa
چهارشنبه 16 فروردین 1391, 16:09 عصر
با سلام به همه
همان طور که در قوانین شرکت ایران هاست اشاره شده بود



* ارسال ایمیل بصورت گروهی و تعداد بالا (حداکثر 1000 ایمیل در روز و 50 ایمیل در 10 دقیقه مجاز می باشد به شرط آنکه کلیه گیرندگان ایمیلها، خودشان درخواست دریافت ایمیل از خریدار را داشته و آدرس و توضیح نحوه لغو عضویت به زبان انگلیسی در متن ایمیل وجود داشته باشد).
لازم به ذکر است که قوانین ایران هاست در سایت به وضوح ذکر شده و ثبت نام و خرید سرویس به منزله پذیرش این قوانین است .


برای این که ارسال گروهی ایمیل ها به منزله اسپم نباشه باید به چند نکته توجه کرد
1- کلیه گیرندگان ایمیلها، خودشان درخواست دریافت ایمیل از خریدار را داشته و آدرس و توضیح نحوه لغو عضویت به زبان انگلیسی در متن ایمیل وجود داشته باشد.
شرح:
در ایمیل ارسالی باید دو کلمه subscribing و unsubscribe باشد و در ضمن کلمه unsubscribe به لینکی از سایت فرستنده ایمیل مربوط باشد
2-متن ها به صورت html باشد

fakhravari
چهارشنبه 16 فروردین 1391, 19:48 عصر
با سلام به همه
همان طور که در قوانین شرکت ایران هاست اشاره شده بود


برای این که ارسال گروهی ایمیل ها به منزله اسپم نباشه باید به چند نکته توجه کرد
1- کلیه گیرندگان ایمیلها، خودشان درخواست دریافت ایمیل از خریدار را داشته و آدرس و توضیح نحوه لغو عضویت به زبان انگلیسی در متن ایمیل وجود داشته باشد.
شرح:
در ایمیل ارسالی باید دو کلمه subscribing و unsubscribe باشد و در ضمن کلمه unsubscribe به لینکی از سایت فرستنده ایمیل مربوط باشد
2-متن ها به صورت html باشد


با سلام
به چه شکل استفاده کنم از این 2 کلمه؟

Saman Hashemi
پنج شنبه 17 فروردین 1391, 08:36 صبح
نکته ای که هست برای spam نشدن ایمیل ها باید آدرس سایت،شماره تلفن و دیگر مشخصات شرکت و یا سایت بنویسید تا حداقل در تعداد پایین اسپم نشه...!
بعدم اگه شما بخواهید فکر کنم بشه اون 1000 ایمیل در روز درستش کنید قانون من درآوردی شرکت و فکر نکنم ربطی به قانون های بین المللی داشته باشه چون اگه اینطور بود این سایتهای ایرانی و خارجی پدر ایمیل ما رو در نمیاوردن...!

mohsen.nsb44
چهارشنبه 03 خرداد 1391, 10:37 صبح
با سلام
یه نمونه.
اول این پست برسی کنید بعد سمپل منو ببینید.
این سمپل در زمان اجرای هر 5 ثانیه یه insert میزنه به بانک که شما میتونید به جای ان تابع ایمیل بزارید .
http://barnamenevis.org/showthread.php?86446-WebTaskScheduler-%D8%A7%D9%86%D8%AC%D8%A7%D9%85-%DA%A9%D8%A7%D8%B1%D9%87%D8%A7-%D8%AF%D8%B1-%D8%B2%D9%85%D8%A7%D9%86-%D9%85%D8%B4%D8%AE%D8%B5-%28%D8%AE%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%88-...%29&highlight=%D8%B2%D9%85%D8%A7%D9%86%D8%A8%D9%86%D8% AF%DB%8C+%D8%A7%D9%86%D8%AC%D8%A7%D9%85+%D8%B9%D9% 85%D9%84%DB%8C%D8%A7%D8%AA+%D8%AF%D8%B1+%D9%88%D8% A8

فقط در زمان run در جدول email زمان زخیره میشه که اگر دکمه send بزنید erro میده . زمان از جدول email دلیت کنید درست میشه.
اقای فخر اوری به لطف راهنمایی شما در ارسال ایمیل تکی مشکلی ندارم اما در ارسال ایمیل گروهی نمونه سورس شما رو دانلود کردم و عین اونارو کپی کردم و فقط اسم جدول رو عوض کردم اما ایمیل ارسال نمیشه
کد هایی که استفاده کردم رو میزارم در ضمن ایمیل کاربران در membership ذخیره میشه که از اون خوندم



#region اطلاعات جدید
public DataTable All_Topik()
{
SqlConnection con = new SqlConnection();
con.ConnectionString=System.Configuration.Configur ationManager.ConnectionStrings["connectionstring"].ConnectionString;
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT top(10) onvan,matn from news order by id desc";
con.Open();

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();

da.Fill(dt);
con.Close();
return dt;
}
#endregion






#region اطلاعات ایمیل
public DataTable All_Email()
{
SqlConnection con = new SqlConnection();
con.ConnectionString = System.Configuration.ConfigurationManager.Connecti onStrings["connectionstring"].ConnectionString;
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT email from aspnet_membership";
con.Open();

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();

da.Fill(dt);
con.Close();
return dt;
}
#endregion






try
{
DataTable dt = All_Topik();
DataTable dt2 = All_Email();
int ct = All_Topik().Rows.Count;
int ce = All_Email().Rows.Count;



for (int i = 0; i < ct; i++)
{
string msg = dt.Rows[i]["onvan"].ToString();
string sub = dt.Rows[i]["matn"].ToString();

MailMessage mail = new MailMessage("admin@iransabtenam.com", dt2.Rows[0]["email"].ToString());

mail.Body = sub;
mail.Subject = msg;
mail.IsBodyHtml = true;
mail.Priority = MailPriority.High;

mail.BodyEncoding = Encoding.UTF8;
mail.SubjectEncoding = Encoding.UTF8;
//mail.HeadersEncoding = Encoding.UTF8;
mail.Headers.Add("ایران ثبت نام", "admin@iransabtenam.com");



for (int b = 1; b < ce; b++)
{
mail.Bcc.Add(dt2.Rows[b]["email"].ToString());
}

SmtpClient c = new SmtpClient("mail.iransabtenam.com", 25);
c.Send(mail);
}

}
catch
{
MessageScript("اشکال در ارسال ایمیل", this);
}

}
public static void MessageScript(string function, Page thispage)
{
thispage.ClientScript.RegisterStartupScript(thispa ge.GetType(), "msg", function, true);
}

fakhravari
چهارشنبه 03 خرداد 1391, 11:32 صبح
برای ممبرشیپ از این استفاده کنselect DISTINCT Email from aspnet_Membership
خود DataTable چک کن ببین مقداری میگیره اگر گرفت نباید مشکلی در ارسال باشه
Spam چک کنید.

mohsen.nsb44
چهارشنبه 03 خرداد 1391, 11:52 صبح
برای ممبرشیپ از این استفاده کنselect DISTINCT Email from aspnet_Membership
خود DataTable چک کن ببین مقداری میگیره اگر گرفت نباید مشکلی در ارسال باشه
Spam چک کنید.
دوست عزیز کد رو به صورتی که گفتید تغییر دادم اما باز ایمیلی برای من ارسال نشد

fakhravari
چهارشنبه 03 خرداد 1391, 12:57 عصر
نباید مشکلی باشه.
http://barnamenevis.org/showthread.php?334127-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%AC%D8%AF%DB%8C%D8%AF-%D8%AA%D8%B1%DB%8C%D9%86-%D9%BE%D8%B3%D8%AA-%D9%87%D8%A7-%D8%A8%D9%87-%D8%A7%DB%8C%D9%85%DB%8C%D9%84-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%A7%D9%86&p=1477481&viewfull=1#post1477481

mohsen.nsb44
چهارشنبه 03 خرداد 1391, 15:34 عصر
نباید مشکلی باشه.
http://barnamenevis.org/showthread.php?334127-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%AC%D8%AF%DB%8C%D8%AF-%D8%AA%D8%B1%DB%8C%D9%86-%D9%BE%D8%B3%D8%AA-%D9%87%D8%A7-%D8%A8%D9%87-%D8%A7%DB%8C%D9%85%DB%8C%D9%84-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%A7%D9%86&p=1477481&viewfull=1#post1477481
دوست عزیز من همه کارهارو انجام دادم کدها رو هم که واستون گذاشتم روی دکمه کلیک میکنم هیچ اخطاری بهم نمیده اجرا میشه اما ایمیلی نمیاد برام

bitcob589
جمعه 08 دی 1391, 23:17 عصر
چگونه می توان تشخیص داد جدیدترین پست برای کدام یک از ایمیلها ارسال نشده است

fakhravari
شنبه 09 دی 1391, 10:53 صبح
چگونه می توان تشخیص داد جدیدترین پست برای کدام یک از ایمیلها ارسال نشده است
در تابع public void send(string Body, string Subj, string send, string resv)
void را از نوع bool بگیرید و با دستورات try ,catch میتونید مشخص کنید.
اگر در catch افتاد یعنی ارسال نشده است.

bitcob589
شنبه 09 دی 1391, 11:13 صبح
کد به صورت زیر نوشته شده است خطا دارد


public bool send(string from, string Body, string Subj, string send, string resv)
{
try
{
DataTable dt = All_Topik();
DataTable dt2 = All_Email();
int ct = All_Topik().Rows.Count;
int ce = All_Email().Rows.Count;
 
 
for (int i = 0; i < ct; i++)
{
string msg = dt.Rows[i]["Message"].ToString();
string sub = dt.Rows[i]["Subject"].ToString();
MailMessage mail = newMailMessage();
mail.From = newMailAddress(from, "جدید ترین پست های سایت", UTF8Encoding.UTF8);
mail.To.Add(dt2.Rows[0]["email"].ToString());
mail.Body = msg;
mail.Subject = sub;
mail.IsBodyHtml = true;
mail.Priority = MailPriority.High;
mail.BodyEncoding = Encoding.UTF8;
mail.SubjectEncoding = Encoding.UTF8;
mail.HeadersEncoding = Encoding.UTF8;
mail.Headers.Add("Company", "FAKHRAVARY.SOMEE");
mail.Headers.Add("Location", "Iran/Bousher");
mail.Headers.Add("Tell", "09173700916");
 
for (int b = 1; b < ce; b++)
{
mail.Bcc.Add(dt2.Rows[b]["email"].ToString());
}
SmtpClient c = newSmtpClient("mail.a-velayat.com", 25);
c.Credentials = newNetworkCredential("fakhr@a-velayat.com", "fakhravary");
c.EnableSsl = false;
c.Send(mail);
}
return from;
}
catch (Exception ex)
{
}
}

چگونه می توان درون catch نام ایمیلیهای که برای آنها جدید ترین پست ارسال نشده است دریافت و ذخیره کرد
لطفا راهنمایی بفرمایید

fakhravari
شنبه 09 دی 1391, 17:57 عصر
یه مثال ساده میزنم کاری با متد های بالا ندارم
public static bool send(string Body, string Subj, string user, string resv)
{
try
{
// تابع ارسال

return true;
}
catch { return false; }
}
List<string> user = new List<string>();
int rows = 10;// تعداد کاربران
for (int i = 0; i < rows; i++)
{
if (!send("", "", "", "")) // در صورت ارسال نشدن
{
user.Add("نام کاربر");
}
}

aminmorteza
شنبه 09 دی 1391, 22:33 عصر
تویه این سایت یه مثال جالبی هست www.how2learnasp.net .فکر کنم برای جلوگیری از spam شدن آمده هر دو تا میلی که ارسال میشه مدتی صبر میکنه و دوباره دو تای بعدی....یه progress bar ساده هم داره که خیلی جالبه تعداد ایمیل های ارسالی رو به صورت درصد نشون میده.

bitcob589
سه شنبه 12 دی 1391, 14:13 عصر
تویه این سایت یه مثال جالبی هست www.how2learnasp.net (http://www.how2learnasp.net) .فکر کنم برای جلوگیری از spam شدن آمده هر دو تا میلی که ارسال میشه مدتی صبر میکنه و دوباره دو تای بعدی....یه progress bar ساده هم داره که خیلی جالبه تعداد ایمیل های ارسالی رو به صورت درصد نشون میده.
اگر می شود لینک بگذارید


چگونه می توان برای جلوگیری از spam شدن ایملیها بعد از ارسال 1000 ایمیل 5 دقیقه وقفه ایجاد کرد

fakhravari
سه شنبه 12 دی 1391, 20:03 عصر
کاری به مکس نداره ارسال نداره.
همه چیز بستگی به هاست داره.
با مدیریت باید تماس بگیرید و ببینید چنتا ارسال در دقیقه میتوانید داشته باشید

bitcob589
یک شنبه 15 بهمن 1391, 19:53 عصر
کاری به مکس نداره ارسال نداره.
همه چیز بستگی به هاست داره.
با مدیریت باید تماس بگیرید و ببینید چنتا ارسال در دقیقه میتوانید داشته باشید
تعداد ارسال ایمیل در دقیقه نیاز به کد نویسی ندارد

sajad_boj70
پنج شنبه 02 خرداد 1392, 11:46 صبح
خیلی دیده بودم ارسال گروهی جدید ترین مطالب سایت میخواستین برای کاربران سایت.

1) گرفتن اطلاعات ایمیل کاربران
#region اطلاعات ایمیل
public DataTable All_Email()
{
SqlConnection con = new SqlConnection(DAL.ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT email from [email]";
con.Open();

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();

da.Fill(dt);
con.Close();
return dt;
}
#endregion

2) گرفتن اطلاعات پست ها
#region اطلاعات جدید
public DataTable All_Topik()
{
SqlConnection con = new SqlConnection(DAL.ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT top(10) Message,Subject from B_Topics order by TopicID desc";
con.Open();

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();

da.Fill(dt);
con.Close();
return dt;
}
#endregion

3) تابع ارسال ایمیل
#region ارسال ایمیل
public void send(string Body, string Subj, string send, string resv)
{
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(send, resv);
mail.Body = Body;
mail.Subject = Subj;
mail.BodyEncoding = Encoding.UTF8;
mail.SubjectEncoding = Encoding.UTF8;
mail.IsBodyHtml = true;

SmtpClient c = new SmtpClient();
c.Host = "mail.a-velayat.com";
c.Send(mail);
}
#endregion

4) دکمه ارسال
protected void Button3_Click(object sender, EventArgs e)
{
DataTable dt = All_Topik();
DataTable dt2 = All_Email();
int ct = All_Topik().Rows.Count;
int ce = All_Email().Rows.Count;

for (int i = 0; i < ct; i++)
{
for (int b = 0; b < ce; b++)
{
send(dt.Rows[i]["Message"].ToString(), dt.Rows[i]["Subject"].ToString(), "fakhravary@yahoo.com", dt2.Rows[b]["email"].ToString());
}

}
}

تنظیم در کنفیگ
<system.net>
<mailSettings>
<smtp from="fakhr@a-velayat.com">
<network host="mail.a-velayat.com" password="tgkbvhhghj" userName="fakhr@a-velayat.com"/>
</smtp>
</mailSettings>
</system.net>


:بوس::لبخند::بوس::لبخند::بوس:: بخند:
میتونید در یه UpdatePanel بزارید برای نمایش مدت زمان



سلام آقای فخرآوری.من از این کد استفاده کردم اما جواب نمیده.!
الان من میخوام با ایمیل خودم که : sajad_boj1371@yahoo.com هستش واسه اعضای سایتم ایمیل بفرستم.
حالا این قسمت وب کانفیگ رو باید چه طوری پر کنم
<smtp from="fakhr@a-velayat.com">
<network host="mail.a-velayat.com" password="tgkbvhhghj" userName="fakhr@a-velayat.com"/>
این mail.a-velayat.com چیه؟؟؟ باید به جاش چی بزارم؟
تو تابع ارسال هم این قسمت چی جوری میشه؟؟

SmtpClient c = new SmtpClient(); c.Host = "mail.a-velayat.com";
c.Send(mail);
host یاهو چیه؟؟

fakhravari
پنج شنبه 02 خرداد 1392, 14:00 عصر
تنظیمات یاهو
using System.Net.Mail;
using System.Net;
using System;
public class SendMail
{
public string sendmail_fromyahoo()
{
try
{
string To = "fakhravary@yahoo.com";
string From = "fakhravary@yahoo.com";
string Subject = "This is a test";
string Body = "It works!";
string FromName = "your Name";
String ToName = "your Friend`s Name";
MailAddress FromAddr = new MailAddress(From, FromName, System.Text.Encoding.UTF8);
MailAddress ToAddr = new MailAddress(To, ToName, System.Text.Encoding.UTF8);
var smtp = new SmtpClient
{
Host = "smtp.mail.yahoo.com",
Port = 25,
EnableSsl = false,// yahoo does not support the secure connection but gmail does!
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new System.Net.NetworkCredential("fakhravary@yahoo.com", "mohamad6321")
};
using (MailMessage message = new MailMessage(FromAddr, ToAddr)
{
Subject = Subject,
Body = Body,
IsBodyHtml = false,
BodyEncoding = System.Text.Encoding.UTF8,
})
{
smtp.Send(message);
return "true";
}
}
catch (Exception ex)
{
return String.Format("{0}", ex);
}
}
}

sajad_boj70
جمعه 03 خرداد 1392, 14:10 عصر
تنظیمات یاهو
using System.Net.Mail;
using System.Net;
using System;
public class SendMail
{
public string sendmail_fromyahoo()
{
try
{
string To = "fakhravary@yahoo.com";
string From = "fakhravary@yahoo.com";
string Subject = "This is a test";
string Body = "It works!";
string FromName = "your Name";
String ToName = "your Friend`s Name";
MailAddress FromAddr = new MailAddress(From, FromName, System.Text.Encoding.UTF8);
MailAddress ToAddr = new MailAddress(To, ToName, System.Text.Encoding.UTF8);
var smtp = new SmtpClient
{
Host = "smtp.mail.yahoo.com",
Port = 25,
EnableSsl = false,// yahoo does not support the secure connection but gmail does!
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new System.Net.NetworkCredential("fakhravary@yahoo.com", "mohamad6321")
};
using (MailMessage message = new MailMessage(FromAddr, ToAddr)
{
Subject = Subject,
Body = Body,
IsBodyHtml = false,
BodyEncoding = System.Text.Encoding.UTF8,
})
{
smtp.Send(message);
return "true";
}
}
catch (Exception ex)
{
return String.Format("{0}", ex);
}
}
}

ممنون.جواب گرفتم.منتها مشکلی که هست اینه که اگه بخوام 3 تا رکورد آخر اخبارم رو واسه هر نفر بفرستم به جای اینکه سه تیتر خبر رو در یک ایمیل بفرسته واسه هر خبر یک ایمیل میفرسته.؟

fakhravari
جمعه 03 خرداد 1392, 16:29 عصر
برمیگرده به seelct شما.
select جوری بنویسید که 3 تیتر رو در 1 رکورد بده

minaalamshahi
سه شنبه 08 مرداد 1392, 13:58 عصر
خیلی دیده بودم ارسال گروهی جدید ترین مطالب سایت میخواستین برای کاربران سایت.

1) گرفتن اطلاعات ایمیل کاربران
#region اطلاعات ایمیل
public DataTable All_Email()
{
SqlConnection con = new SqlConnection(DAL.ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT email from [email]";
con.Open();

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();

da.Fill(dt);
con.Close();
return dt;
}
#endregion

2) گرفتن اطلاعات پست ها
#region اطلاعات جدید
public DataTable All_Topik()
{
SqlConnection con = new SqlConnection(DAL.ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT top(10) Message,Subject from B_Topics order by TopicID desc";
con.Open();

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();

da.Fill(dt);
con.Close();
return dt;
}
#endregion

3) تابع ارسال ایمیل
#region ارسال ایمیل
public void send(string Body, string Subj, string send, string resv)
{
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(send, resv);
mail.Body = Body;
mail.Subject = Subj;
mail.BodyEncoding = Encoding.UTF8;
mail.SubjectEncoding = Encoding.UTF8;
mail.IsBodyHtml = true;

SmtpClient c = new SmtpClient();
c.Host = "mail.a-velayat.com";
c.Send(mail);
}
#endregion

4) دکمه ارسال
protected void Button3_Click(object sender, EventArgs e)
{
DataTable dt = All_Topik();
DataTable dt2 = All_Email();
int ct = All_Topik().Rows.Count;
int ce = All_Email().Rows.Count;

for (int i = 0; i < ct; i++)
{
for (int b = 0; b < ce; b++)
{
send(dt.Rows[i]["Message"].ToString(), dt.Rows[i]["Subject"].ToString(), "fakhravary@yahoo.com", dt2.Rows[b]["email"].ToString());
}

}
}

تنظیم در کنفیگ
<system.net>
<mailSettings>
<smtp from="fakhr@a-velayat.com">
<network host="mail.a-velayat.com" password="tgkbvhhghj" userName="fakhr@a-velayat.com"/>
</smtp>
</mailSettings>
</system.net>


:



تنظیمات webconfig رو میشه توضیح بدین

و اینکه host رو چی باید بذارم؟

sender و reciver ایمیل میتونه هم یاهو باشه هم gmail?

minaalamshahi
سه شنبه 08 مرداد 1392, 14:25 عصر
ممنون.جواب گرفتم.منتها مشکلی که هست اینه که اگه بخوام 3 تا رکورد آخر اخبارم رو واسه هر نفر بفرستم به جای اینکه سه تیتر خبر رو در یک ایمیل بفرسته واسه هر خبر یک ایمیل میفرسته.؟

آدرس ایمیل اشتباه هم در قسمت to میدم خطا نمیده بهم؟

fakhravari
سه شنبه 08 مرداد 1392, 15:30 عصر
minaalamshahi (http://barnamenevis.org/member.php?193555-minaalamshahi)فکر نکنم سخت باشه خیلی خواناست
تنظیمات درست بودن یا خراب خودتون میتونید یه متد بنویسید چک کنه. معتبر بودنش نمیدونم از سمت یاهو یا گوگل

fakhravari
سه شنبه 08 مرداد 1392, 23:43 عصر
/// <summary>
/// رشته ایمیل
/// </summary>
/// <param name="Text">ایمیل</param>
public static bool Email(string Text)
{
if (System.Text.RegularExpressions.Regex.IsMatch(Text , @"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$"))
{ return true; }
else { return false; }
}

setareh2013
چهارشنبه 09 مرداد 1392, 00:10 صبح
با تشکر از شما این کدها رو استفاده کردم حالا خطا میده که
Bad sequence of commands. The server response was: This mail server requires authentication when attempting to send to a non-local e-mail address. Please check your mail client settings or contact your administrator to verify that the domain or address is defined for this server.
باید چه کار کنم ؟

fakhravari
چهارشنبه 09 مرداد 1392, 00:12 صبح
یوزر پسرورد های سرور ایمیل معتبر نیست

setareh2013
چهارشنبه 09 مرداد 1392, 00:35 صبح
یوزر پسورد رو چک کردم مشکلی نداره
شرکتی که ازش هاست خریدم میگه :
شناسه و رمز عبور همانی است که شما در بخش تعریف پست الکترونیک تنظیم کرده اید.
بمنظور جلوگیری از هرزنامه نگاری از طریق سرور های پویاسازان ، ما قسمت remote authentication را بر روی سرور فعال کرده ایم ، بنابراین شما باید قبل از ارسال پست الکترونیک گزینه SMTP authentication را فعال کنید.
برای انجام این تنظیم در نرم افزار outlook express شما باید به بخش Tools>Accounts>Mail>E-mail Properties>Servers بروید و گزینه my server requires authentication را تیک بزنید.

من با outlook کار نکردم . اصلا چه ربطی به outlook داره ؟

setareh2013
چهارشنبه 09 مرداد 1392, 00:37 صبح
داخل وبکانفیگ اینو نوشتم :
<system.net>
<mailSettings>
<smtp from="Info@mysite.ir">
<network host="mail.mysite.ir" password="Info123456" userName="Info@mysite.ir" />
</smtp>
</mailSettings>
</system.net>
پسورد ایمیلم هم که روی هاست تعریف کردم همینی هست که بالا نوشتم
با تشکر

fakhravari
چهارشنبه 09 مرداد 1392, 10:05 صبح
ببنید در کل یک روش تنظیم در وب کنفیگ داریم
یه روش دیگه همه سوزر پس ایپی مستقیم درون کد میزاریم.
-------------------------------------------------------------------------
روش وب کنفیگ
<system.net>
<mailSettings>
<smtp from="mkazemifar@yahoo.com.com">
<network host="smtp.mail.yahoo.com" password="velayat123" userName="info@a-velayat.com"/>
</smtp>
</mailSettings>
</system.net>
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage("To@a-velayat.com", "info@a-velayat.com");
mail.Body = TextBox1.Text.Trim();
mail.Subject = TextBox2.Text.Trim();
mail.BodyEncoding = Encoding.UTF8;
mail.SubjectEncoding = Encoding.UTF8;
mail.IsBodyHtml = false;
SmtpClient c = new SmtpClient();
c.Host = "mail.a-velayat.com";
c.Send(mail);
روش دیگر
http://forum.ustmb.ir/thread2225.html

setareh2013
پنج شنبه 10 مرداد 1392, 22:11 عصر
حالا این تنظیمات outlook express رو چه کار کنم ؟

fakhravari
پنج شنبه 10 مرداد 1392, 23:36 عصر
چی کار به outlook دارید اصلا!

مرتضی تقدمی
جمعه 11 مرداد 1392, 00:41 صبح
سلام
دلیل اینکه ایمیل هاست من به یاهو ایمیل می فرسته ولی به جیمیل نمی فرسته چی می تونه باشه؟!
ممنون

setareh2013
شنبه 12 مرداد 1392, 11:43 صبح
چی کار به outlook دارید اصلا!
شرکتی که ازش هاست رو خریدم این پیغام رو داده :
منظور جلوگیری از هرزنامه نگاری از طریق سرور های پویاسازان ، ما قسمت remote authentication را بر روی سرور فعال کرده ایم ، بنابراین شما باید قبل از ارسال پست الکترونیک گزینه SMTP authentication را فعال کنید.
برای انجام این تنظیم در نرم افزار outlook express شما باید به بخش Tools>Accounts>Mail>E-mail Properties>Servers بروید و گزینه my server requires authentication را تیک بزنید.

fakhravari
یک شنبه 13 مرداد 1392, 18:36 عصر
عزيز دل برادر شما بايد يه سري يوزر پسورد با ايپي اتصال داشته باشيد ديگه چيزي نميخواد..
اون روش براي برنامه ويندوزي كه مثل my computer باش رفتار كنيد
http://forum.ustmb.ir/thread2225.html

setareh2013
جمعه 18 مرداد 1392, 12:24 عصر
یوزرنیم من اینه : password="Info123456" userName=Info@mysite.ir" پسوردم هم password="Info123456
آدرس ایمیلم هم Info@mysite.ir
میشه بگین دقیقا توی وب کانفیگ چی بنویسم که درست بشه . من هر چند صورت بالا رو امتحان کردم بازم به یوزو پسوردم خطا میده .
با تشکر

amireastern
چهارشنبه 25 دی 1392, 14:47 عصر
salam mamnon az shoma ama Entity frameWork baladam ado dos nadaram mishe begin jaygozinesh chie?

fakhravari
چهارشنبه 25 دی 1392, 15:58 عصر
salam mamnon az shoma ama Entity frameWork baladam ado dos nadaram mishe begin jaygozinesh chie?

یکی از سوالات عجیب !
به هر حال شما داده هایی دارید از خروجی select

fakhravari
چهارشنبه 25 دی 1392, 15:59 عصر
یوزرنیم من اینه : password="Info123456" userName=Info@mysite.ir" پسوردم هم password="Info123456
آدرس ایمیلم هم Info@mysite.ir
میشه بگین دقیقا توی وب کانفیگ چی بنویسم که درست بشه . من هر چند صورت بالا رو امتحان کردم بازم به یوزو پسوردم خطا میده .
با تشکر

network host="itnevisan.com" password="fakhravary1" userName="info@itnevisan.com"