تشخیص باز و مشاهده شدن ایمیلهای ارسالی از یک برنامه وب توسط کاربران
نویسنده: احمد رجبی
تاریخ: ۱۳۹۷/۰۶/۰۲ ۲۰:۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
برای این کار روش استاندارد و مستقیمی وجود ندارد؛ اما با استفاده از بعضی از روشها مانند ارسال عکس مخفی، برخی تگهایی که یک آدرس را فراخوانی میکنند (مانند bgsound)، کلیک روی لینک و یا ترکیبی از چند روش میتوان تا حدود زیادی به اهداف فوق رسید.
روشی که بررسی خواهیم کرد، مبتنی بر ارسال عکس بوده و برای شروع، به یک عکس بسیار کوچک (1X1) با حجم کم و غیرقابل دید (Transparent) نیاز داریم که میتوانید یکی از آنها را از این آدرس انتخاب کنید. در این روش به همراه ایمیل، این عکس را ارسال خواهیم کرد (در تگ img). عکس باید بگونهای باشد که ظاهر ایمیل را تحت تأثیر قرار ندهد و آدرس عکس باید طوری تنظیم شود که به برنامه ما یک درخواست را ارسال کند و برنامه با توجه به درخواست ارسال شده، عملیات لازم را انجام دهد.
مثالی از عکسی که باید ارسال شود:
<img src='http://www.example.com/1x1.gif' style='width:1px;height:1px;'>
private bool SendEmail(string mail_to, string mail_subject, string mail_body)
{
bool result = false;
try
{
SmtpClient client = new SmtpClient("smtp.gmail.com");
client.UseDefaultCredentials = false;
client.EnableSsl = true;
client.Port = 587;
client.Credentials = new NetworkCredential("from@mail.com", "your_gmail_password");
MailMessage mailMessage = new MailMessage();
mailMessage.From = new MailAddress("from@mail.com");
mailMessage.To.Add(mail_to);
mailMessage.Body = mail_body;
mailMessage.Subject = mail_subject;
client.Send(mailMessage);
result = true;
}
catch (Exception ex)
{
result = false;
}
return result;
} public IActionResult SendEmailWithTransparentImage()
{
var email_body = "your_email_body";
var imageUrl = Url.Action("ImageRequestFromEmail", "Home", new {user_id=12345}, protocol: Url.ActionContext.HttpContext.Request.Scheme);
var imageTag = $"<img src='{imageUrl}' style='width:1px;height:1px;'>";
email_body += imageTag;
var result = SendEmail("to@email.com", "test image", email_body);
return View(result);
} [Route("1x1.gif")]
public IActionResult ImageResponse()
{
//درخواست عکس ارسال شده و اینجا باید عملیات دلخواه را انجام دهیم
var emailOpenDate = DateTime.Now;
//سپس عکس را در جواب درخواست ارسال میکنیم
byte[] imagegBytes = Convert.FromBase64String("R0lGODlhAQABAAAAACH5BAEAAAAALAAAAAABAAEAAAI=");
return File(imagegBytes, "image/gif");
} <img src='http://www.example.com/1x1.gif?user_id=12345' style='width:1px;height:1px;'> var imageUrl = Url.Action("ImageResponse, "Home", new {user_id=12345},protocol: Url.ActionContext.HttpContext.Request.Scheme);
public IActionResult ImageResponse(int user_id)