PDA

View Full Version : لغو دریافت خبرنامه



b.paseban
دوشنبه 07 اسفند 1391, 16:21 عصر
سلام بر شما.
برای اینکه کاربر بتونه از دریافت خبرنامه ارسالی از سایت انصرف بده باید چکار کرد؟
معمولا توی ایمیل ارسال یه لینک بعنوان لغو دریافت خبرنامه قرار داده میشه.که شبیه به http://www.ysite.com/UnSubscribe?PK=mhdn4hndbjfj (http://www.ysite.com/UnSubscribe?FK=mhdn4hndbjfj) هست که با توجه به این نمونه میشه فهمید که یه پارامتری منحصر بفردی ارسال میشه که تو مقصد باید خونده بشه (PK) و این مقدار مختص هر کاربر هست و برای تمامی ایمیل های ارسالی یکسان نیست.
من برای ارسال ایمیل در واقع لینک خبر مورد نظرم رو بهمراه مقدار ثابت دیگه ای که میتونه خلاصه ای از متن خبر باشه و داخل یه تم طراحی شده قرارمیدم و ایمیل رو بصورت گروهی (bcc) ارسال می کنم.قرار دادن مقدار ثابت در ایمیل مشکلی نداره و راحته اما مقدار متغییر(پارامتر ارسالی برای کاربر) و نمیدونم باید چطوری داخل ایمیل قرار بدم.
شایدم بشه توی لینک مورد نظرمون یجوری ایمیل کاربر رو (البته موقعی که ایمیل دست کاربر رسیده) کُدکنیم و بجای اون مقدار منحصر بفرد قرار بدیم.مثلا http://www.ysite.com/UnSubscribe?FK=EncodeEmail.

b.paseban
سه شنبه 08 اسفند 1391, 12:49 عصر
استادان عزیز نظری , راهنماییی ؟

mohsen_f_b
سه شنبه 08 اسفند 1391, 15:05 عصر
سلام

برای لغو خبرنامه؛ شما درصورتی که ایمیل افرادی که در خبرنامه شما عضو شده اند را در یک دجدول ذخیره کرده اید می توانید ایمیل را از بین ایمیلها پیدا و حذف کنید که این کار توصیه نمیشود.
بهتر این است که شما یک فیلد دیگر بغیر از ایمیل شخص داشته باشید مثل IsDeleted که در صورتیکه کاربر خواست لغو کند همین فیلد را به True تغییر وضعیت میدهید. حالا شما زمانیکه لیست کاربران را برای دریافت خبرنامه آماده میکنید یک شرط قرار دهید که افرادی که حذف شده اند نمایش داده نشوند و در Query شما نباشند.

موفق باشید

bitcob589
سه شنبه 08 اسفند 1391, 15:18 عصر
سلام

برای لغو خبرنامه؛ شما درصورتی که ایمیل افرادی که در خبرنامه شما عضو شده اند را در یک دجدول ذخیره کرده اید می توانید ایمیل را از بین ایمیلها پیدا و حذف کنید که این کار توصیه نمیشود.
.


به چه دلیل توصیه نمی شود که ایمیل کاربر مورد نظر حذف نشود

b.paseban
سه شنبه 08 اسفند 1391, 16:03 عصر
سلام

برای لغو خبرنامه؛ شما درصورتی که ایمیل افرادی که در خبرنامه شما عضو شده اند را در یک دجدول ذخیره کرده اید می توانید ایمیل را از بین ایمیلها پیدا و حذف کنید که این کار توصیه نمیشود.
بهتر این است که شما یک فیلد دیگر بغیر از ایمیل شخص داشته باشید مثل IsDeleted که در صورتیکه کاربر خواست لغو کند همین فیلد را به True تغییر وضعیت میدهید. حالا شما زمانیکه لیست کاربران را برای دریافت خبرنامه آماده میکنید یک شرط قرار دهید که افرادی که حذف شده اند نمایش داده نشوند و در Query شما نباشند.

موفق باشید

با تشکر از شما.
من فیلدی از قبل برای این موضوع در نظر گرفتم و datatype اون رو Bit در نظر گرفتم.()
مشکلی با این قسمت ندارم ولی کاربر رو ما باید یجوری شناسایی کنیم.درسته؟
خوب برای شناسایی کاربر مثلا از ایمیل دریافتی روی لینکی که مثلا دارای آدرسی مثل http://www.ysite.com/UnSubscribe?PK=mhdn4hndbjfj کلیک کرده ما میایم و مقدار PK رو که من از قبل برای هر کاربر یه مقدار جداگانه در نظر گرفتم , رو تشخیص میدیم.خوب ما باید این مقدار رو به یه طریقی ارسال کنیم دیگه(توی قالب ارسالی ایمیل).اما ما توی ارسال ایمیل فقط میتونیم مقادیر ثابتی رو برای همه ارسال ها در نظر بگیریم(در صورتی که برای عده زیادی ارسال شود ).مثلا ای دی خبر (که برای همه ایمیل های ارسالی یکسانه و یا تیتر خبر) و تنها چیزی که یکسان نیست توی ارسال ایمیل بصورت گروهی آدرس های ایمیل کاربران هست ولی مقادیر.
برای درک بیشتر من تمپلیت ارسال ایمیل رو براتون قرار میدم:



<div id=":10g">
<div class="adM">
</div>
<div>
<div class="adM">
</div>
<table style="color: #333333; border: solid 1px #dddddd; border-radius: 5px 5px 0 0"
bgcolor="#FFFFFF" border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td>
<table border="0" dir="rtl" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td valign="middle">
<span style="font-size: 18px; color: #333333; margin: 0; direction: rtl; padding: 0;
text-align: right;">#linktitle#</span><br>
<span style="font-size: 13px; font-family: Tahoma; color: #555555; margin: 0; padding: 0">
شما یک ایمیل از طرف <a style="color: #136797; text-decoration: none;" href="http://www.Mysite.com">
پایگاه اطلاع رسانی</a> باموضوع بالا دریافت کرده اید.</span><br>
<span style="font-size: 13px; font-family: Tahoma; color: #555555; margin: 0; padding: 0">
از شما برای دیدن این خبر دعوت بعمل می آید</span>
</td>
</tr>
</tbody>
</table>
<table border="0" dir="rtl" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td align="right">
<table align="" border="0" cellpadding="6" cellspacing="1">
<tbody>
<tr>
<td style="background-color: #136797; border: 1px solid #136797; border-radius: 4px"
align="center" bgcolor="#136797" valign="middle">
<div style="padding-right: 10px; padding-left: 10px">
<a href="#Link#" style="text-decoration: none" target="_blank"><span style="font-size: 12px;
font-family: tahoma; color: #fff; white-space: nowrap; display: block">مشاهده کامل
متن</span></a></div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<div class="yj6qo">
</div>
<div class="adL">
</div>
</div>
<div class="adL">
</div>
</div>


من توی قالب ارسال بالا دو مقدار #linktitle# و #Link# بصورت خالی گذاشتم (اولی تیتر خبر و دومی لینک خبر) که هنگام ارسال ایمیل بصورت زیر اون رو پر می کنم.


SmtpClient smtpClient = new SmtpClient();
NetworkCredential basicCredential = new NetworkCredential("No-Replay@Mysite.com", "Paasword");
MailMessage message = new MailMessage();
MailAddress fromAddress = new MailAddress("No-Replay@Mysite.com");
smtpClient.Host = "mail.Mysite.com";
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = basicCredential;
message.From = fromAddress;
message.Subject = titlLastNews;
message.To.Add("No-Replay@Mysite.com");
//Set IsBodyHtml to true means you can send HTML email.
message.IsBodyHtml = true;
string BddSend = MainBccm.Remove(MainBccm.Length - 1, 1);
message.Bcc.Add(BddSend);
StreamReader sr = new StreamReader(Server.MapPath("SubscribMail.htm"));
string Body = sr.ReadToEnd();
sr.Close();
string Source = "http://" + "www.Mysite.com/News.aspx?Id" + "=" + IdLastNews.ToString();
Body = Body.Replace("#Link#", Source);
Body = Body.Replace("#linktitle#", titlLastNews);
message.Body = Body;
smtpClient.Send(message);

فرض بگیریم که ما یه خط هم توی قالب ایمیل ارسالی اضافه کردیم و یه لبنک هم برای اون در نظر گرفتیم بصورت زیر:

<a href="http://www.ysite.com/UnSubscribe?PK=PkValue">لغو خبرنامه<a/>
برای مقدار دهی به PK ما نمیتونیم که مثلا از بانک اطلاعات کاربر یک رو با ایمیل فلان و Pk فلان و ایملیل رو ارسال کنیم و بعد دوباره ایمیل بعدی و Fk مربوطه (چون باید FK متفاوت باشه از هم) بخونیم . مایک بار همه ایمیل ها رو داخل BCC میذاریم و اون ایمیل رو ارسال می کنیم.
فکر نمیکنم این طوری بشه.

b.paseban
سه شنبه 08 اسفند 1391, 16:05 عصر
به چه دلیل توصیه نمی شود که ایمیل کاربر مورد نظر حذف نشود
خوب موقعی که میتونیم با یه فیلد اون کاربر رو فعال یا غیر فعال کنیم کار درست پاک نکردن کاربر و اجازه دوباره فعال شدن اون کاربره.

b.paseban
چهارشنبه 09 اسفند 1391, 14:20 عصر
اساتید.
من هنوز جوابی برای این سوال دریافت نکردم.
بابا یکی یه نگاهی به این تاپیک بندازه.