مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

1372611

عضویت از 1395/04/27

ارسال ایمیل

  • یکشنبه 14 شهریور 1395
  • 23:41
تشکر میکنم

سلام

من می خوام برای پروژه ام ارسال ایمیل به کاربر بزارم می خوام ببینم بدون خریدن هاست ودامین هم میشه توسایت ایمیل ارسال بشه؟

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 15 شهریور 1395
  • 09:28

اگر هاست و دامین ندارید چگونه میخواهید سایت را پابلیش کنید ؟

باید سایت رو یک یرور قرار بگیره و بله میتونه ایمیل ارسال کنه

از SMTP جیمیل میتونید استفاده کنید

کاربر سایت

1372611

عضویت از 1395/04/27

  • دوشنبه 15 شهریور 1395
  • 12:14

من از smtp یاهو استفاده می کنم ولی error

System.NullReferenceException بهم میده 

کدهامو قرار می دم اگه میشه لطفا یه نگاهی بهش بندازین

کاربر سایت

1372611

عضویت از 1395/04/27

  • دوشنبه 15 شهریور 1395
  • 12:45

کدهای مربوط به web.config

  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />

    <!-- Log Handler -->
    <!--
  //وقتی وب کانفیگ ادیت میشه اپلیکیشن استاپ و استارت میشه
    -->
    <add key="DefaultLogType" value="0"/>
    <add key="RootRelativeApplicationLogPathName" value="~/App_Data/Logs/Application.log"/>
    <!-- /Log Handler -->
    <!-- Email -->
    <add key="SmtpClientEnableSsl" value="1"/>
    <add key="SmtpClientTimeout" value="100000"/>
    <add key="EmailSubjectPrefix" value="SAFARNAME -"/>
    <add key="SupportAddress" value="zahra.mojallal611@yahoo.com"/>
    <add key="SupportDisplayName" value="SAFARNAME"/>
    <add key="NoReplyAddress" value="zahra.mojallal1372611@yahoo.com"/>
    <add key="NoReplyDisplayName" value="SafarName Authomatic System"/>
    <!-- Email addresses must be seperated by {,} -->
    <add key="BccAddresses" value="zahra.mojallal611@yahoo.com"/>
    <!-- /Email -->
    <!-- Businesses -->
    <add key="ServerTimeZoneDifference" value="210"/>
    <add key="ActivateUserAfterRegistration" value="1"/>
    <!-- /Businesses -->
    <add key="owin:AppStartup" value="SafarName.Startup,SafarName" />
  </appSettings>

 

 

 <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network" from="zahra.mojallal611@yahoo.com">
        <network defaultCredentials="false" host="smtp.mail.yahoo.com" port="587" userName="zahra.mojallal611@yahoo.com" password="XXX" "/>
      </smtp>
    </mailSettings>
  </system.net>

کدهای مربوط به MailMessage

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Mvc;

namespace SafarName.Helpers.Utilities
{
    public static class MailMessage
    {
        //کدهای مربوط به بدنه رایانامه
        #region MailBody_ConvertTextForBodyEmail(string text)

        //ایجاد یک رشته که قالب رایانامه را شبیه سازی میکند
        public static string ConvertTextForBodyEmail(string text)
        {
            text = text.Replace(System.Convert.ToChar(10).ToString(), ""); // Return Key.
            text = text.Replace(System.Convert.ToChar(13).ToString(), "<br />"); // Return Key.
            text = text.Replace(System.Convert.ToChar(9).ToString(), "&nbsp;&nbsp;&nbsp;&nbsp;"); // TAB Key.

            return (text);
        }

        #endregion ConvertTextForBodyEmail(string text)

        //متد های مربوط به ارسال رایانامه و تنظیمات میل مسیج و اس ام تی پی
        #region SendMailMethods_MailMessage&SmtpConfiguration()

        /// <summary>
        /// متد ارسال که موضوع و بدنه دارد
        /// </summary>
        /// <param name="subject">موضوع</param>
        /// <param name="body">بدنه</param>
        public static void Send
            (
                string subject,
                string body
            )
        {
            Send
                (
                    null,
                    null,
                    subject,
                    body,
                    System.Net.Mail.MailPriority.High,
                    null,
                    System.Net.Mail.DeliveryNotificationOptions.Never
                );
        }



        /// <summary>
        /// متد ارسال که چهار پارامتر دارد
        /// </summary>
        /// <param name="recipient">دريافت کننده</param>
        /// <param name="subject">موضوع</param>
        /// <param name="body">بدنه</param>
        /// <param name="priority">اهميت</param>
        public static void Send
            (
                System.Net.Mail.MailAddress recipient,
                string subject,
                string body,
                System.Net.Mail.MailPriority priority
            )
        {
            System.Net.Mail.MailAddressCollection oRecipients =
                new System.Net.Mail.MailAddressCollection();

            oRecipients.Add(recipient);

            Send(null, oRecipients, subject, body, priority, null, System.Net.Mail.DeliveryNotificationOptions.Never);
        }

        /// <summary>
        /// متد ارسال با شش پارامتر
        /// </summary>
        /// <param name="sender">ارسال کننده</param>
        /// <param name="recipients">دريافت کنندگان</param>
        /// <param name="subject">موضوع</param>
        /// <param name="body">بدنه</param>
        /// <param name="priority">اهميت</param>
        /// <param name="deliveryNotification">رسيد ارسال</param>
        public static void Send
    (
        System.Net.Mail.MailAddress sender,
        System.Net.Mail.MailAddressCollection recipients,
        string subject,
        string body,
        System.Net.Mail.MailPriority priority,
        System.Net.Mail.AttachmentCollection attachments,
        System.Net.Mail.DeliveryNotificationOptions deliveryNotification
    )
        {
            //ایجاد سه شی از میل آدرس - اس ام تی پی و میل مسیج
            System.Net.Mail.MailAddress oSender = null; ;
            System.Net.Mail.SmtpClient oSmtpClient = null;
            System.Net.Mail.MailMessage oMailMessage = null;

            try
            {
                // #################################################
                // ### Mail Message Configuration ##################
                // #################################################

                // قدم اول نیو کردن شی میل مسیج
                oMailMessage = new System.Net.Mail.MailMessage();

                //اگر پارامتر ورودی سندر نال نبود
                if (sender != null)
                {
                    //پارامتر دوم برابر با شی ایجاد شده از میل آدرس میشود
                    oSender = sender;
                }
                //در غیر اینصورت
                else
                {
                    //ایجاد دو رشته از نیم اسپیس وب اپلیکیشن و کلاس اپلیکیشن ادیت و متد گت ولیو
                    string strAddress = SafarName.Helpers.Utilities.ApplicationEdit.GetValue("NoReplyAddress");
                    string strDisplayName = SafarName.Helpers.Utilities.ApplicationEdit.GetValue("NoReplyDisplayName");

                    //اگر رشته دیسپلی نیم نال یا امپتی بود
                    if (string.IsNullOrEmpty(strDisplayName))
                    {
                        //شی میل آدرس را با  دو رشته اس تی آر آدرس نیو میکنیم
                        oSender =
                            new System.Net.Mail.MailAddress(strAddress, strAddress, System.Text.Encoding.UTF8);
                    }
                    //در غیر اینصورت
                    else
                    {
                        //شی میل آدرس را با  یک رشته اس تی آرآدرس  و یک رشته دیسپلی نیم نیو میکنیم
                        oSender =
                            new System.Net.Mail.MailAddress(strAddress, strDisplayName, System.Text.Encoding.UTF8);
                    }
                }

                //قسمت های فرام - سندر - و ریپلای تو را برابر با شی میل آدرس او سندر قرار میدهیم
                //وقتی از یک آدرس در این سه پراپرتی و دو جای دیگر در وب کانفیگ استفاده میکنیم احتمال در اسپم نرفتن بیشتر است
                oMailMessage.From = oSender;
                oMailMessage.Sender = oSender;
                oMailMessage.ReplyTo = oSender;

                //پراپرتی های ذیل از جنس کالکشن هستند
                //جهت اطمینان ابتدا آنها را کلیر میکنیم
                oMailMessage.To.Clear();
                oMailMessage.CC.Clear();
                oMailMessage.Bcc.Clear();
                oMailMessage.Attachments.Clear();

                //اگر پارامتر ورودی از میل آدرس نال بود
                if (recipients == null)
                {
                    //شی ساخته شده از میل آدرس را برابر نال قرار میدهیم
                    System.Net.Mail.MailAddress oMailAddress = null;
                    //ایجاد دو رشته از نیم اسپیس وب اپلیکیشن و کلاس اپلیکیشن ادیت و متد گت ولیو
                    string strAddress = SafarName.Helpers.Utilities.ApplicationEdit.GetValue("SupportAddress");
                    string strDisplayName = SafarName.Helpers.Utilities.ApplicationEdit.GetValue("SupportDisplayName");

                    //اگر رشته دیسپلی نیم نال یا امپتی بود
                    if (string.IsNullOrEmpty(strDisplayName))
                    {
                        oMailAddress =
                            new System.Net.Mail.MailAddress(strAddress, strAddress, System.Text.Encoding.UTF8);
                    }
                    //در غیر اینصورت
                    else
                    {
                        //شی میل آدرس را با  یک رشته اس تی آرآدرس  و یک رشته دیسپلی نیم نیو میکنیم
                        oMailAddress =
                            new System.Net.Mail.MailAddress(strAddress, strDisplayName, System.Text.Encoding.UTF8);
                    }

                    //پراپرتی تو شی میل مسیج را برابر با شی میل آدرس قرار میدهیم
                    oMailMessage.To.Add(oMailAddress);
                }
                else
                {
                    //اگر پارامتر ورودی میل آدرس نال نبود
                    // Note: Wrong Usage!
                    // oMailMessage.To = recipients;

                    //به ازای تمامی آدرس های موجود در پارامتر ورودی با استفاده از پراپرتی تو میل  به مسیج اد میکنیم
                    foreach (System.Net.Mail.MailAddress oMailAddress in recipients)
                    {
                        oMailMessage.To.Add(oMailAddress);
                    }
                }

                //ایجاد یک رشته از نیم اسپیس وب اپلیکیشن و کلاس اپلیکیشن ادیت و متد گت ولیو
                string strBccAddresses = SafarName.Helpers.Utilities.ApplicationEdit.GetValue("BccAddresses");

                //اگر  استرینگ بی سی سی نال بود
                if (string.IsNullOrEmpty(strBccAddresses))
                {
                    //پراپرتی بی سی سی را به شی میل مسیج اد میکنیم
                    oMailMessage.Bcc.Add("Chabok.121@gmail.com");
                }
                //در غیراینصورت
                else
                {
                    //استرینگ بی سی سی را به میل مسیج اد میکنیم
                    oMailMessage.Bcc.Add(strBccAddresses);
                }

                //بدنه رایانامه را مشخص میکنیم
                oMailMessage.Body = body;

                //ایجاد یک رشته از نیم اسپیس وب اپلیکیشن و کلاس اپلیکیشن ادیت و متد گت ولیو
                string strEmailSubjectPrefix = SafarName.Helpers.Utilities.ApplicationEdit.GetValue("EmailSubjectPrefix");
                //اگر رشته بالا نال بود
                if (string.IsNullOrEmpty(strEmailSubjectPrefix))
                {
                    //عنوان ورودی را به میل مسیج میدهیم به عنوان سابجکت
                    oMailMessage.Subject = subject;
                }
                else
                {
                    //در غیر اینصورت ابتدا پرفیکس و بعد عنوان را میدهیم
                    oMailMessage.Subject = strEmailSubjectPrefix + " " + subject;
                }

                //فعال شدن کد های اچ تی ام ال در متن
                oMailMessage.IsBodyHtml = true;
                //اولویت ارسال را با پارامتر ورودی مشخص میکنیم
                oMailMessage.Priority = priority;
                //بدنه را انکدینگ میکنیم
                oMailMessage.BodyEncoding = System.Text.Encoding.UTF8;
                //عنوان را انکدینگ میکنیم
                oMailMessage.SubjectEncoding = System.Text.Encoding.UTF8;
                //نحوه مطلع شدن سرور رایانامه از ارسال رایانامه را با پارامتر ورودی مشخص میکنیم
                oMailMessage.DeliveryNotificationOptions = deliveryNotification;

                //اگر رایانامه پیوستی داشت
                if (attachments != null)
                {
                    // Note: Wrong Usage!
                    // oMailMessage.Attachments = attachments;
                    //پیوست ها را به این شکل به میل مسیج اد میکنیم
                    foreach (System.Net.Mail.Attachment oAttachment in attachments)
                    {
                        oMailMessage.Attachments.Add(oAttachment);
                    }
                }

                //هدر رایانامه را مشخص میکنیم
                oMailMessage.Headers.Add("SAFARNAME_Mailer_Version", "1.2.1");
                oMailMessage.Headers.Add("SAFARNAME_Mailer_Date", "2016/09/05");
                oMailMessage.Headers.Add("SAFARNAME_Mailer_Author", "Zahra Mojallal");
                oMailMessage.Headers.Add("SAFARNAME_Mailer_Company", "www.SAFARNAME.com");

                // ###################################################
                // ###  /Mail Message Configuration ##################
                // ###################################################


                // ###################################################
                // ###  SMTP Message Configuration ###################
                // ###################################################
                //ایجاد یک شی از اس ام تی پی
                oSmtpClient = new System.Net.Mail.SmtpClient();

                //کلا تو این گت ولیو ها دیفالت ولیو آخرین مقدار هست
                //بررسی امضا الکترونیکی رایانامه و مقدار دهی آن توسط متد گت ولیو
                if (SafarName.Helpers.Utilities.ApplicationEdit.GetValue("SmtpClientEnableSsl", "1") == "1")
                {
                    oSmtpClient.EnableSsl = true;
                }
                else
                {
                    oSmtpClient.EnableSsl = false;
                }

                //مدت زمان برقراری اتصال برای ارسال رایانامه پیش فرض 100 ثانیه است
                oSmtpClient.Timeout =
                    System.Convert.ToInt32(SafarName.Helpers.Utilities.ApplicationEdit.GetValue("SmtpClientTimeout", "100000"));

                // ###################################################
                // ### /SMTP Message Configuration ###################
                // ###################################################

                //ارسال نهایی رایانامه
                oSmtpClient.Send(oMailMessage);
            }
            //درصورت بروز خطا آنرا لاگ میکنیم
            catch (System.Exception ex)
            {
                System.Collections.Hashtable oHashtable =
                    new System.Collections.Hashtable();

                if (oSender != null)
                {
                    oHashtable.Add("Address", oSender.Address);
                    oHashtable.Add("DisplayName", oSender.DisplayName);
                }

                oHashtable.Add("Subject", subject);
                oHashtable.Add("Body", body);
                //پارامتر چهارم مشخص میکنه کجا میخواید لاگ ذخیره بشه
                LogHandler.Report(typeof(MailMessage), oHashtable, ex, LogHandler.LogTypes.LogToFile);

                string strErrorMessage = System.Web.HttpContext.GetGlobalResourceObject("Library", "ErrorOnSendingEmail").ToString();

            }
            //شی میل مسیج و اس ام تی پی را خاتمه میدهیم
            finally
            {
                if (oMailMessage != null)
                {
                    oMailMessage.Dispose();
                    oMailMessage = null;
                }

                if (oSmtpClient != null)
                {
                    oSmtpClient = null;
                }
            }
        }

        #endregion SendMailMethods_MailMessage&SmtpConfiguration()
    }
}

وکدهای ApplicationEditکه اطلاعات رو از Web.configeمی گیره

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Mvc;

namespace SafarName.Helpers.Utilities
{
    public static class ApplicationEdit
    {
		//متد گت ولیو
        public static string GetValue(string key)
        {
            //برگرداندن متد دوم کلاس جاری
            return (GetValue(key, string.Empty));
        }

        /// <remarks>
        /// متد گت ولیو با دو پارامتر رشته ای کی و ولیو
        /// </remarks>
        public static string GetValue(string key, string defaultValue)
        {
            //اگر دیفالت ولیو نال بود امپتی رو برمیگردونه
            if (defaultValue == null)
            {
                defaultValue = string.Empty;
            }
            //در غیر اینصورت مقدارشو تریم میکنه برمیگردونه
            else
            {
                defaultValue = defaultValue.Trim();
            }

            //اگر کلید نال بود دیفالت ولیو رو برمیگردونیم
            if (key == null)
            {
                return (defaultValue);
            }

            key = key.Trim();

            //اگر کلید امپتی بود دیفالت ولیو رو برمیگردونیم
            if (key == string.Empty)
            {
                return (defaultValue);
            }

            try
            {
                string strData =
                    System.Configuration.ConfigurationManager.AppSettings[key];

                //اگر مقدار ولیو نال یا نال استرینگ بود بازم دیفالت ولیو رو برمیگردونه
                if (string.IsNullOrEmpty(strData))
                {
                    return (defaultValue);
                }

                return (strData.Trim());
            }
            catch
            {
                return (defaultValue);
            }
        }
    }
}

وقتی تریس می کنم اطلاعات رو از webconfig می گیره ولی errorزیر نشون می ده

وتوی mailmessage وارد catch میشه 

به نظرتون مشکل چی میتونه باشه؟میتونه از smtp باشه؟

 

کاربر سایت

1372611

عضویت از 1395/04/27

  • دوشنبه 15 شهریور 1395
  • 19:52

مشکل از smtp بود که رفع شد.

ممنون

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)