怎样截获或改变发送邮件的目的地

来自故乡的风 2013-07-19 09:32:44
我现在维护一个学习网站。数据库表有管理员表老师表学生表;每个管理员管理若干个老师,每个老师管理若干个学生。每个表里都有的字段包括ID,姓名、邮件地址等。

网站有个功能是发送邮件。项目里有一个类email.vb,里边有各种方法来实现定义好的邮件格式和内容。比如说管理员给老师安排一个新学生,要给老师和学生同时发一个email,老师可以给所有他的学生发email,等等。

这个网站还有一个开发测试环境(包括测试数据库)。为了方便我把所有的老师和学生的邮件地址改成了我自己的邮箱。我又新建个测试网页,上面加了很多按钮,每个按钮调用一个发送邮件的方法。这样如果领导想改变某个邮件的格式或内容,我只要运行这个网页就能在自己的邮箱收到测试的邮件,而不会打扰老师或学生。


问题:我们老板看这个测试功能不错,他也想试试。请问各位大侠,怎样建一个网页,调用发邮件的方法,但是邮件发送到他的邮箱(而不是我的邮箱)?

注:不能通过修改调用参数的方法修改邮箱,因为有的邮箱得从数据库里读出来(是我的或另外一个程序员的邮箱)。

感谢各位的帮忙!
...全文
1354 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
happytonice 2013-07-19
  • 打赏
  • 举报
回复
3楼的好!1
来自故乡的风 2013-07-19
  • 打赏
  • 举报
回复
Thanks everyone, your answers are very helpful!
x_jefferson 2013-07-19
  • 打赏
  • 举报
回复
可以发你为什么不能发老板=、=
Banianer 2013-07-19
  • 打赏
  • 举报
回复
你的邮件地址用参数形式不是可以了么? 调用的时候传入是什么地址就发送什么地址。 测试时候传入测试邮件地址即可。
紫魂一号 2013-07-19
  • 打赏
  • 举报
回复
你可以通过配置文件获取数据库不同的配置,用来发送邮件。。。
joyhen 2013-07-19
  • 打赏
  • 举报
回复
这种东西不应该写死的,方法体可以写的通用,但是关键的一些参数应该用xml去配置,再去读取,修改的时候方便的很。关于发送邮件,vb我可不会,发一个c#的:
 /// <summary>
    /// .net邮件发送程
    /// </summary>
    public class MailMessage
    {
        private string _subject;
        private string _body;
        private string _from;
        private string _fromName;
        private string _recipientName;
        private string _mailDomain;
        private int _mailserverport;
        private string _username;
        private string _password;
        private bool _html;
        private string _recipient;
        private string _attachMentPath;
        private Dictionary<string, string> dic;

        /// <summary>
        /// 构造函数
        /// </summary>
        public MailMessage()
        {
            dic = JONcms.Common.config.SystemStatusHelper.GetSiteConfig(true);
            this._username = dic["emailusername"];
            this._password = dic["emailpassword"];
            this._mailDomain = dic["emailstmp"];
            this._mailserverport = int.Parse(dic["emailport"]);
        }

        /// <summary>
        /// 邮件主题
        /// </summary>
        public string Subject
        {
            get { return this._subject; }
            set { this._subject = value; }
        }

        /// <summary>
        /// 邮件正文
        /// </summary>
        public string Body
        {
            get { return this._body; }
            set { this._body = value; }
        }
        /// <summary>
        /// 发件人地址
        /// </summary>
        public string From
        {
            get { return _from; }
            set { this._from = value; }
        }
        /// <summary>
        /// 发件人姓名
        /// </summary>
        public string FromName
        {
            get { return this._fromName; }
            set { this._fromName = value; }
        }
        /// <summary>
        /// 收件人姓名
        /// </summary>
        public string RecipientName
        {
            get { return this._recipientName; }
            set { this._recipientName = value; }
        }
        /// <summary>
        /// 邮箱域
        /// </summary>
        public string MailDomain
        {
            get { return this._mailDomain; }
            set { this._mailDomain = value; }
        }

        /// <summary>
        /// 邮件服务器端口号
        /// </summary>	
        public int MailDomainPort
        {
            set { this._mailserverport = value; }
            get { return this._mailserverport; }
        }
        /// <summary>
        /// SMTP认证时使用的用户名
        /// </summary>
        public string MailServerUserName
        {
            set { this._username = value.Trim() != "" ? value.Trim() : ""; }
            get { return _username; }
        }
        /// <summary>
        /// SMTP认证时使用的密码
        /// </summary>
        public string MailServerPassWord
        {
            set { this._password = value; }
            get { return _password; }
        }
        /// <summary>
        ///  是否Html邮件
        /// </summary>
        public bool Html
        {
            get { return this._html; }
            set { this._html = value; }
        }
        /// <summary>
        /// 收件人的邮箱地址
        /// </summary>
        /// <param name="username"></param>
        /// <returns></returns>
        public bool AddRecipient(params string[] username)
        {
            this._recipient = username[0].Trim();
            return true;
        }
        /// <summary>
        /// 多个附件路径以分号隔开
        /// </summary>
        public string AttachMentPath
        {
            get { return this._attachMentPath; }
            set { this._attachMentPath = value; }
        }

        /// <summary>
        /// 发送
        /// </summary>
        /// <returns></returns>
        public bool Send()
        {
            System.Net.Mail.MailMessage myEmail = new System.Net.Mail.MailMessage();
            Encoding eEncod = Encoding.GetEncoding("utf-8");
            myEmail.From = new System.Net.Mail.MailAddress(this.From, this.Subject, eEncod);
            myEmail.To.Add(this._recipient);
            myEmail.Subject = this.Subject;
            myEmail.IsBodyHtml = true;
            myEmail.Body = this.Body;
            myEmail.Priority = System.Net.Mail.MailPriority.Normal;
            myEmail.BodyEncoding = Encoding.GetEncoding("utf-8");
            if (!string.IsNullOrEmpty(this.AttachMentPath))
            {
                string[] arrAttach = this.AttachMentPath.Split(';');
                for (int i = 0; i < arrAttach.Length; i++)
                {
                    System.Net.Mail.Attachment mailAttach = new System.Net.Mail.Attachment(arrAttach[i]);
                    myEmail.Attachments.Add(mailAttach);
                }
            }

            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
            smtp.Host = this.MailDomain;
            smtp.Port = this.MailDomainPort;
            smtp.Credentials = new System.Net.NetworkCredential(this.MailServerUserName, this.MailServerPassWord);

            //当不是25端口(gmail:587)
            if (this.MailDomainPort != 25)
            {
                smtp.EnableSsl = true;
            }

            try
            {
                smtp.Send(myEmail);
            }
            catch (System.Net.Mail.SmtpException e)
            {
                return false;
            }

            return true;
        }
    }
紫魂一号 2013-07-19
  • 打赏
  • 举报
回复
可能搞反了,你这边应该是发送方。。。发送方可以用一个表存起来。
紫魂一号 2013-07-19
  • 打赏
  • 举报
回复
通过描述觉得你的设计有问题。为什么设置成你的邮箱可以全部接收?然后不能再设置成你老板的么?邮件批量发送应该有个发送方和接收方吧。你的接收方咋就不能做个通用的配置呢,或者做一个接收方的配置页,你把所有的接收方配置到一个表里。用谁的时候直接调出来不就行了么

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧