PDA

View Full Version : مشکل اخیر هاست ها در فرستادن ایمیل



axeradan
شنبه 04 مهر 1383, 12:40 عصر
مدتی است که فرستادن ایمیل با ASP.NET با مشکل برخورد میکند. سرویس دهنده هاست من میگوید که در سرور تغییراتی داده اند تا امنیت بیشتر شود و به غیر از آنها بسیاری دیگر از سرویس دهندگان هاستینگ هم این کار را کرده اند و در آینده بیشتر هم میشود و اساسا فرستادن ایمیل با SMTP بر روی این سرورها دچار مشکل شده است.

برای همین برنامه ای به نام ASPMAIL را بر روی سرور نصب کرده اند که از این پس باید با استفاده از آن ایمیل هایمان را بفرستیم و برای هر زبان برنامه نویسی هم یک Template دارد. :(

ولی من نمی خواهم به این برنامه وابسته شوم. در ضمن این برنامه مجانی هم نیست و سرویس دهنده ما برای آن پول داده است.

خواهش میکنم یکنفر مرا راهنمایی کند. من می خواهم از #C استفاده می کنم.

در ضمن تعجب می کنم که Microsoft با آن همه قدرت دات نت پیش بینی آن را نکرده است.
:roll:

MicroGalaxy
یک شنبه 05 مهر 1383, 08:10 صبح
با سلام دوست من

فکر می کنم اشکال از SMTP نباشه چون خود ASP میل از SMTP برای فرستادن میل استفاده می کنه تازه اگر هم با بالا بردن Security برای میل زدن اون هم با SMTP مشکلی به وجود می آمد کاربران PHP هم صداشون در می اومد در حالی که این طور نیست فکر کنم اشکال از .NET باشه یا خود ASP.NET به هر حال از هر چی باشه از تنظیمات Security و SMTP نیست !!!!!!!!!! :مخالف:

Dr.Behnoud
یک شنبه 05 مهر 1383, 12:54 عصر
مشکل پیش آمده دقیقا به خاطر امنیت است. مشکل هم در دات نت نیست بلکه فقط به خاطر سر راست نبودن راه حل بعضی ها از آن بی خبرند. دلیل مشکل ایجاد شده این است که سرور مربوطه حالت SMTP Authentication را فعال کرده است. این یک تکنیک مهم و کاربردی برای ایجاد امنیت است. بدین ترتیب دیگر کسی نمی تواند از آدرس ایمیل شما برای فرستادن ایمیل استفاده کنند و برای این کار حتمآ باید نام کاربری و پسورد رابداند.

یکی دیگر از خصوصیات این تکنیک این است که هنگام فرستادن ایمیل به آدرسهای مربوط به یک سرور مشکلی پیش نمی آید ولی هنگامی که به یک نشانی خارجی می فرستید مشکل ایجاد می شود. مثلا وقتی از آدرس aaa@yourserver.com به bbb@yourserver.com ایمیل می فرستید مشکلی پیش نمی آید ولی وقتی به آدرسxxx@otherserver.com ایمیل می فرستید مشکل نمایان می شود. آیا قبلآ دقت کرده بودید.

راه حل:

برای زبان برنامه نویسی #C از دستور زیر استفاده کنید:

<div dir=ltr>

myMail.Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"] = 1;
myMail.Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"] = "---SMTPAUTHUser---";
myMail.Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"] = "---SMTPAUTHPassword---";

</div>

توجه داشته باشید که myMail همان آبجکت MailMessage است.

موفق باشید. :)

Vahid_Nasiri
یک شنبه 05 مهر 1383, 18:22 عصر
اگر فقط بحث اعتبار سنجی بوده یک مثال کامل در این مورد:
http://www.barnamenevis.org/forum/viewtopic.php?t=14424

axeradan
دوشنبه 06 مهر 1383, 10:35 صبح
جناب دکتر بهنود ، از اینکه خیلی سریع منو راهنمایی کردید ممنونم. مشکل من هم به همون سرعت حل شد.

یک مشکل کوچولو دارم و اون اینه که وقتی می خوام تو دلفی 8 هم از اون استفاده کنم، از همون خط اول اشکال می گیره. تو مطالب جناب وحید نصیری هم چیزی براش پیدا نکردم. قضیه چیه ؟

Dr.Behnoud
سه شنبه 07 مهر 1383, 11:45 صبح
کار تو دلفی 8 کمی قلق دارد و از قواعد خاصی پیروی می کند. نمونه زیر مشکل شما را حل می کند:


procedure TWebForm1.SendMail_Click&#40;sender&#58; System.Object; e&#58; System.EventArgs&#41;;
var mymail&#58;MailMessage;
begin
mymail&#58;=MailMessage.Create;
mymail.From&#58;='aaa@myserver.com';
//---
myMail.Fields&#91;'http&#58;//schemas.microsoft.com/cdo/configuration/smtpauthenticate'&#93;&#58;=&#91;b&#93;convert.ToString &#40;1&#41;;&#91;/b&#93;
myMail.Fields&#91;'http&#58;//schemas.microsoft.com/cdo/configuration/sendusername'&#93; &#58;= '---myUserName---';
myMail.Fields&#91;'http&#58;//schemas.microsoft.com/cdo/configuration/sendpassword'&#93; &#58;= '---myPassword---';
//---
mymail.&amp;To&#58;='aaa@yahoo.com;bbb@yahoo.com';
mymail.Bcc&#58;='ccc@yahoo.com';
mymail.Subject&#58;='Test';
mymail.BodyFormat&#58;=MailFormat.Html;
mymail.Body&#58;='&lt;html>'
+'&lt;body bgcolor="#999999" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" rightmargin="0" bottommargin="0">my authenticated Mail Message - succeed&lt;br>OK &lt;/body>&lt;/html>';
SmtpMail.SmtpServer&#58;='mail.myserver.com';
SmtpMail.Send &#40;mymail&#41;;
Response.Write&#40;'Ok'&#41;;
end;