Send Mail

2023-10-27

using System;
using System.Web.Mail;
using System.Configuration;
using System.Web ;
using System.IO;
using DAL;

namespace BLL
{
 /// <summary>
 /// Summary description for SMTP.
 /// </summary>
 ///
 public class SMTP
 {
  protected static string SMTP_MAILSERVER = ConfigurationSettings.AppSettings["SMTPServer"];
  protected static string MAILACCOUNT = ConfigurationSettings.AppSettings["MailFrom"];
  protected static string MAILTOCC = ConfigurationSettings.AppSettings["MailCC"];
  protected static string MAILBCC = ConfigurationSettings.AppSettings["BCC"];

  public static void SendTruckerMail(string strTo, string strMailType, string[] BodyArray, string strAtta,
   string strAttachmentDirectory)
  { 
   string strBody = string.Empty ;
   string strSubject = string.Empty ;
   string maillist = string.Empty;
   string cclist = string.Empty ;

   string strAppointID = Convert.ToString(BodyArray[4]).Trim();
   GenericSqlDAL sqlbaseInfo = new GenericSqlDAL(); 
   string TruckerName = sqlbaseInfo.GetTruckerNameByAppointID(strAppointID);

   //For FCL shipment, it is allow to attach the S/O into trucking appointment system now, please email this attachment to vendor and trucker accompany with appointment form too.
   string strSOAttachment = sqlbaseInfo.GetAttacmentRecord(strAppointID);

   switch (strMailType)
   {
    case "Delete":
     maillist = strTo;   //Trucker email address
     cclist = Convert.ToString(BodyArray[5]); //Vendor email address
     if(maillist == "")
     {
      maillist =  ConfigurationSettings.AppSettings["AdminAccount"];
      cclist = "";
     }
     
     strSubject = "Trucking Appointment(" + Convert.ToString(BodyArray[3]).Trim() + ")--(Appointment No: " + Convert.ToString(BodyArray[4]).Trim() + ") was cancelled.";
     strBody = "Hi " + TruckerName + ",<br><br>";
     strBody = strBody + "There is an appointment (Appointment No: " + Convert.ToString(BodyArray[4]).Trim() + ") from " + Convert.ToString(BodyArray[1]).Trim() + ", and it has been deleted by staff (" + Convert.ToString(BodyArray[0]).Trim() + ").<br><br>";
     strBody = strBody + " Please refer to the attachment and check the appointment.<br><br><br>";
     strBody = strBody + "Best Regards <br>";
     strBody = strBody + "Trucking Appointmnet System <br>";
     break;
    case "Pass":
     maillist = strTo;
     cclist = Convert.ToString(BodyArray[5]);
     if(maillist == "")
     {
      maillist =  ConfigurationSettings.AppSettings["AdminAccount"];
      cclist = "";
     }
     strSubject = "Trucking Appointment("  +  Convert.ToString(BodyArray[3]).Trim()  +  ")--(Appointment No: "  +  Convert.ToString(BodyArray[4]).Trim()  +  ")";
               
     strBody = "Hi " + TruckerName + ",<br><br>";
     strBody = strBody + "There is an appointment (Appointment No: " + Convert.ToString(BodyArray[4]).Trim() + ") from " +  Convert.ToString(BodyArray[1]).Trim() + ", and it has been confirmed by staff (" + Convert.ToString(BodyArray[0]).Trim() + ").<br><br>";
     strBody = strBody + " Please refer to the attachment and check the appointment.<br><br><br>";

     strBody = strBody + "Best Regards <br>";
     strBody = strBody + "Trucking Appointmnet System <br>";
     break;

    case "TruckerPass":
     maillist = strTo;
     cclist = Convert.ToString(BodyArray[5]);
     if(maillist == "")
     {
      maillist =  ConfigurationSettings.AppSettings["AdminAccount"];
      cclist = "";
     }
     strSubject = "Trucking Appointment("  +  Convert.ToString(BodyArray[3]).Trim()  +  ")--(Appointment No: "  +  Convert.ToString(BodyArray[4]).Trim()  +  ") -- Trucker Confirm";
               
     strBody = "Hi " + Convert.ToString(BodyArray[2]).Trim() + ",<br><br>";
     strBody = strBody + "There is an appointment (Appointment No: " + Convert.ToString(BodyArray[4]).Trim() + ") from " +  Convert.ToString(BodyArray[1]).Trim() + ", and it has been confirmed by Trucker staff (" + Convert.ToString(BodyArray[0]).Trim() + ").<br><br>";
     strBody = strBody + " Please refer to the attachment and check the appointment.<br><br><br>";

     strBody = strBody + "Best Regards <br>";
     strBody = strBody + "Trucking Appointmnet System <br>";
     break;

    case "TruckerReject":
     maillist = strTo;
     cclist = Convert.ToString(BodyArray[5]);
     if(maillist == "")
     {
      maillist =  ConfigurationSettings.AppSettings["AdminAccount"];
      cclist = "";
     }
     strSubject = "Trucking Appointment("  +  Convert.ToString(BodyArray[3]).Trim()  +  ")--(Appointment No: "  +  Convert.ToString(BodyArray[4]).Trim()  +  ") -- Trucker Reject";
               
     strBody = "Hi " + Convert.ToString(BodyArray[2]).Trim() + ",<br><br>";
     strBody = strBody + "There is an appointment (Appointment No: " + Convert.ToString(BodyArray[4]).Trim() + ") from " +  Convert.ToString(BodyArray[1]).Trim() + ", and it has been rejected by Trucker staff (" + Convert.ToString(BodyArray[0]).Trim() + ").<br><br>";
     strBody = strBody + " Please refer to the attachment and check the appointment.<br><br><br>";

     strBody = strBody + "Best Regards <br>";
     strBody = strBody + "Trucking Appointmnet System <br>";
     break;

    case "Reject":
     maillist = strTo;
     cclist = Convert.ToString(BodyArray[5]);
     if(maillist == "")
     {
      maillist =  ConfigurationSettings.AppSettings["AdminAccount"];
      cclist = "";
     }
     strSubject = "[Reject]Trucking Appointment(" + Convert.ToString(BodyArray[3]).Trim() + ")--(Appointment No: " + Convert.ToString(BodyArray[4]).Trim() + ")";
     strBody = "Hi " + Convert.ToString(BodyArray[1]).Trim() + ",<br><br>";
     strBody = strBody + "Your trucking appointment (Appointment No: " + Convert.ToString(BodyArray[4]).Trim() + ") to <b>" + Convert.ToString(BodyArray[2]).Trim() + "</b> has been rejected by MAPS staff ( " + Convert.ToString(BodyArray[0]).Trim() + ") <br><br>";
     strBody = strBody + "Please visit MAPS Trucking Appointmnet system to check or revise the apppoitment: <br><br><br>";
     strBody = strBody + "Best Regards <br>";
     strBody = strBody + "Trucking Appointmnet System <br>";
     break;
//    case "BatchPass":
//     maillist = strTo;
//     cclist = Convert.ToString(BodyArray[5]);
//     if(maillist == "")
//     {
//      maillist =  ConfigurationSettings.AppSettings["AdminAccount"];
//      cclist = "";
//     }
//     strSubject = "Trucking Appointment(" + Convert.ToString(BodyArray[3]).Trim() + ")--(Appointment No: " + Convert.ToString(BodyArray[4]).Trim() + ")";
//     strBody = "Hi " + Convert.ToString(BodyArray[2]).Trim() + ",<br><br>";
//     strBody = strBody + "There is an appointment (Appointment No: " + Convert.ToString(BodyArray[4]).Trim() + ") from " + Convert.ToString(BodyArray[1]).Trim() + ", and it has been confirmed by staff (" + Convert.ToString(BodyArray[0]).Trim() + ").<br><br>";
//     strBody = strBody + " Please refer to the attachment and check the appointment.<br><br><br>";
//     strBody = strBody + "Best Regards <br>";
//     strBody = strBody + "Trucking Appointmnet System <br>";
//     break;
   }
   SendEmail(maillist, cclist,MAILBCC, strSubject, strBody, strAtta,strAttachmentDirectory+strSOAttachment, true);
   // SendEmail(maillist, cclist, MAILBCC,strSubject, strBody, strAtta);
  }

  
  public static void SendEmail( string strTo, string strCC, string strBCC, string strSubject,
   string strBody, string strAttachment, bool useTest)
  {
   SendEmail(strTo,strCC, strBCC, strSubject,strBody,strAttachment,"", useTest);
  }

  public static void SendEmail( string strTo, string strCC, string strBCC, string strSubject,
   string strBody, string strAttachment)
  {
   SendEmail(strTo,strCC, strBCC, strSubject,strBody,strAttachment,"", true);
  }

  private static void SendEmail( string strTo, string strCC, string strBCC,
   string strSubject, string strBody, string strAttachment,string strSOAttachment, bool useTest)
  {
   if (strTo.Length == 0)
    //return false;
    return;
   System.Web.Mail.MailMessage myMail;
   try
   {
    myMail = new MailMessage();
    if (IsTesting(useTest))
    {
     myMail.From = burning2007@163.com;
     myMail.To = "burning2007@163.com";
     myMail.Cc = "burning2007@163.com;";
     if( strBCC != null && strBCC != string.Empty )
      myMail.Bcc = strBCC;
     myMail.Subject = "ConnieTesting: "+strSubject;
    }
    else
    {
     myMail.From = MAILACCOUNT;
     myMail.To = strTo;
     myMail.Cc = strCC;
     if( strBCC != null && strBCC != string.Empty )
      myMail.Bcc = strBCC;
     myMail.Subject = strSubject;
    }
    myMail.BodyFormat = System.Web.Mail.MailFormat.Html;
    myMail.BodyEncoding = System.Text.UTF8Encoding.UTF8;
    myMail.Body = strBody;

    if(System.IO.File.Exists(strAttachment))
     myMail.Attachments.Add(new System.Web.Mail.MailAttachment(strAttachment));
    if(File.Exists(strSOAttachment))
     myMail.Attachments.Add(new MailAttachment(strSOAttachment));
    System.Web.Mail.SmtpMail.SmtpServer = SMTP_MAILSERVER;
//    System.Web.Mail.SmtpMail.SmtpServer = System.Configuration.ConfigurationSettings.AppSettings["SMTPServer"];
    System.Web.Mail.SmtpMail.Send(myMail);
    myMail = null;
    
   }
   catch(System.Runtime.InteropServices.COMException ex)
   {
    
    throw ex;
    
   }
   catch(System.Exception ex)
   {
    
    throw ex;
    
   }
   catch
   {
    
    throw ;
    
   }
  }

  private static bool IsTesting(bool useTest)
  {
   if( !useTest )
    return false;

   string strTesting=ConfigurationSettings.AppSettings["Testing"];
   try
   {
    return Convert.ToBoolean(strTesting);
   }
   catch
   {
    return false;
   }
  }

 }
}

转载于:https://www.cnblogs.com/zhangchenliang/archive/2010/08/05/1793382.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Send Mail 的相关文章

  • 尝试注销 django 时出现运行时错误

    当我尝试从 django 项目注销时 出现以下错误 调用 Python 对象时超出最大递归深度 这是注销按钮的 URL url r logout users views logout name logout 这是视图 from django
  • delphi exe 和 dll 无需使用运行时包构建

    对于我的上一个项目 我在 Delphi 应用程序中使用了许多框架 所以我决定创建 dll 并将它们放入 dll 中 全部在 Delphi 中创建 我浏览了许多网站并提出了有效的代码 但对于该示例 我必须使用以下命令编译应用程序和 dll使用
  • 递推的复杂度 T(n)=T(n/2T(n/2)+n^2?

    根据主定理 这个递归是 n 2 但是如果我们用树递归来解决这个问题 那么解就是 n 2 logn 难道我做错了什么 如果递推关系为 T n 2T n 2 n 2 那么您处于主定理的第三种情况 并且正则性条件适用 因此 T n Theta n
  • Log(n) 中的 Tetranacci 数

    我偶然发现一个问题 需要我计算第n个四联数 https en wikipedia org wiki Generalizations of Fibonacci numbers Tetranacci numbers时间复杂度为 O log n
  • 如何在运行时更改语言而不会出现布局问题

    我有一个 winforms 应用程序 用户必须能够在运行时更改语言 为了概括该开关并避免必须对控件名称进行硬编码 我尝试了以下扩展 internal static void SetLanguage this Form form Cultur
  • Java Process无法通过Runtime.getRunTime().exec()获取InputStream

    try String str Process process Runtime getRuntime exec bash home abhishek workspace Pro run InputStream isout process ge
  • 如何从 silverlight 应用程序检测操作系统?

    我有一个 Silverlight3 应用程序 旨在在 Windows 和 Mac OS 环境上运行 我想在运行时知道我的应用程序是在 Windows 还是 Mac 上运行 这样我就可以根据用户在他们选择的操作系统中习惯的方式进行一些调整 例
  • 需要特殊数组(线性场)的算法

    我有一个数组 线性场 与预先排序的数字 1 2 3 4 5 6 但这些数组向右移动 k次 now its 5 6 1 2 3 4 k 2 但我不知道k 只有数组A 现在我需要一个算法来找到 A 中的最大值 运行时间 O logn 我认为它是
  • 如何以编程方式设置或清除 32BIT 标志?

    编译时 我总是将其设置为 Any CPU 然而 有些客户没有所需二进制文件的 64 位版本 即使在 x64 系统上运行也是如此 在这些情况下 我要求他们使用 corflags exe 32BIT 选项修改我的二进制文件 http msdn
  • 使用 java 中的参数执行 shell 脚本

    我已经用谷歌搜索了一段时间 每个人似乎都有不同的解决方案 但似乎没有一个对我有用 我都尝试过ProcessBuilder and Runtime 两者都调用 sh直接文件并将其输入 bin bash 没有运气 回到基础 我当前的代码如下 S
  • 什么时候插入排序比合并排序快?

    对于家庭作业问题 我被告知插入排序以 8n 2 运行 合并排序以 64 n lg n 运行 作为我得到的解决方案的一部分 它说只要 n 它来自这个 代数 推理路线 steps in insertion sort lt steps in me
  • java中最常用的运行时异常有哪些? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 作为一名希望完善自己的编程技能的java程序员 我经常遇到必须创建运行时异常的情况 我知道如果明智地使用的话 这是一种很好的做法 亲自 空指针异
  • 从 IntelliJ Ultimate 外部运行时,Tomcat 的“服务器日志”在哪里?

    当运行我的Vaadin https en wikipedia org wiki Vaadin app on Tomcat https en wikipedia org wiki Apache Tomcat8 5 外部来自IntelliJ h
  • 以编程方式创建表

    我正在开发 devexreport 我想以编程方式创建一个表 我使用这些代码 但有一个小问题 DevExpress XtraReports UI XRTable tbl new XRTable DevExpress XtraReports
  • “未定义的行为”是否会扩展到编译时?

    我们都听过这样的警告 如果你调用未定义的行为在 C 或 C 中 任何事情可以发生 这是否仅限于任何运行时行为 或者这还包括任何编译时行为吗 特别是 编译器在遇到调用未定义行为的构造时是否允许拒绝代码 在标准中没有其他要求的情况下 甚至崩溃
  • 在 Java 和 C 中在运行时调用名为“string”的方法

    我们如何调用名称为的方法string在运行时 谁能告诉我如何在 Java 和 C 中做到这一点 在java中可以通过反射api来完成 看一下Class getMethod String methodName Class parameterT
  • C++ 在运行时分配 const 值?

    我有一个在运行时永远不会改变的恒定值 但在运行时之前不可能知道 有没有一种方法可以在不定义常量的情况下声明常量 无论是否作为类的成员 并在确定后 且仅一次 分配一个计算值 或者我是否必须诉诸非常量声明并使用编码 S Ps ALL CAPS变
  • 如何在Python中另一个类的函数中获取调用者类名?

    我的目标是模拟应用程序的序列图 为此我需要有关运行时调用者和被调用者类名的信息 我可以成功检索调用者函数 但无法获取调用者类名 Scenario caller py import inspect class A def Apple self
  • Swift 中的运行时错误处理

    我完全知道 Swift 没有 try catch 机制来捕获异常 好吧 Swift 2 0 现在支持它们 我还了解到 许多 API 方法都会返回一个 NSError 如果出现问题 该错误对象将被填充为错误对象 所以请不要向我指出这个问题 S
  • 如何在运行时更改android应用程序名称和图标?

    安装 Android 应用程序后 当您按下应用程序中的按钮时 是否可以动态更改应用程序图标和名称 在运行时 这是到目前为止的代码 getPackageManager setComponentEnabledSetting new Compon

随机推荐

  • python爬虫selenium被检测处理(适用淘宝登录)

    1 增加这个是防止检测是webdriver谷歌驱动调起的请求 通用大部分 self chrome execute cdp cmd Page addScriptToEvaluateOnNewDocument source Object def
  • RandomAccessFile 实现文件分片获取发送和写入

    在实现文件上传的过程发现由于文件太大会导致程序接收和发送都出现问题 所以想着实现一个分片发送和写入的方法方便实现大文件上传 查了一些资料 在随机文件流操作时RandomAccessFile 恰好可以满足我的要求 这里主要是如何用Random
  • 怎么使用input执行xss攻击_XSS场景及修复方案总结

    xss原理 跨站脚本攻击 Cross Site Scripting 缩写为XSS 恶意攻击者往Web页面里插入恶意javaScript代码 当用户浏览该页之时 嵌入其中Web里面的javaScript代码会被执行 从而达到恶意攻击用户的目的
  • 大专生学Java真没出路吗?

    现在市场上的众多移动应用 大部分都是用Java做后台开发的 我们大家所熟知的支付宝 美团 淘宝 京东等都是用Java来做后台的 这么多互联网公司对Java如此青睐 这样也就助推Java的生态变得越来的越好 毕竟有大厂背书 生态越好 Java
  • 防范明文密码和散列值抓取

    一 单机密码抓取的防范方法 微软为了防止用户密码在内存中以明文形式泄露 发不了补丁KB2871997 关闭了Wdigest功能 windows server 2012以上版本默认关闭Wdigest 使攻击者无法从内存中获取明文密码 对于wi
  • openerp/odoo 权限解析

    前言 odoo权限管理主要分为4类 1 菜单权限 即未指定的用户组看不到该菜单 缺点 不安全 只是隐藏菜单 若用户知道菜单的id一样可以通过url查看菜单 2 对象级别 即有权限的对象才能有某种功能比如 增删改查的权限 3 记录级别权限 即
  • STM32 GPIO的配置寄存器

    1 STM32 GPIO的配置寄存器 CRL CRH 快速学习 39度C的博客 CSDN博客 配置寄存器 2 STM32 BSRR BRR ODR寄存器详情解析 存储技术 电子发烧友网 3 STM32 GPIO篇 一直在路上的Tom的博客
  • Mysql的redo log详解

    1 介绍 redo日志是在事务提交后生成的 如果此时服务down掉 后期重启可以用redo日志恢复数据 保证事务的持久性 事务提交后永久生效 2 redo日志生成流程 第1步 先将原始数据从磁盘中读入内存中来 修改数据的内存拷贝第2步 生成
  • synchronized () 括号中应该传什么对象?

    我看jdk源码的时候发现了这样的代码 同步锁中传入了静态的自定义的类 Lock 1 这种写法和直接传this有什么区别 2 类 Lock 定义成静态和不定义成静态有什么区别 对于代码块同步 也就是synchronized lock 这样的写
  • Centos7利用pyshark解析QUIC报文

    一 环境准备 利用pyshark解析报文 如果是http https等常见的协议 正常的版本一般也能搞定 但是如果解析比较新的协议 比如我这次要解析QUIC就得使用比较新的tshark版本 本次实践的环境是Centos7 装的tshark版
  • 【计算机网络】湖科大微课堂笔记 p7-10 计算机网络体系结构:常见的计算机网络体系结构、必要性、分层思想、专业术语

    视频 计算机网络体系结构 重点 难点 目录 常见的计算机网络体系结构 必要性 思想举例 专业术语 常见的计算机网络体系结构 OSI体系结构与TCP IP体系结构 用户主机的操作系统和路由器中 会带有符合TCP IP体系结构标准的TCP IP
  • 小波阈值去噪原理及实现

    小波阈值去噪原理及实现 1 小波阈值去噪的基本原理 2 小波阈值去噪需要考虑的问题 3 小波阈值的实现 1 小波阈值去噪的基本原理 将信号通过小波变换 采用Mallat算法 后 信号产生的小波系数含有信号的重要信息 将信号经小波分解后小波系
  • HTML5拖放API之回收站效果,HTML5拖放API

    1 拖放的步骤 1 对象元素的draggable属性设置为true draggable true 还需要注意的是a元素和img元素必须指定href 2 编写与拖放有关的事件处理代码 事件 产生事件的元素 描述 dragstart 被拖放的元
  • C# 连接SQLServer数据库及登录验证知识

    最近在做联系数据库的系统项目 这里重新回顾了一些数据库的知识 主要是使用VS2012与SQL Server 2012简单的做了下面两个数据库的应用 虽然比较简单 但我认为这是非常有用的知识 尤其对刚接触这样的系统知识的同学 同时也巩固了自己
  • 无法访问com.fasterxml.jackson.databind.JavaType找不到com.fasterxml.jackson.databind.JavaType的类文件

    在Spring Data Redis项目整合中更换序列化器存储引用数据类型时报如下的错误 Error 67 42 java 无法访问com fasterxml jackson databind JavaType 找不到com fasterx
  • Knowledge Graph Prompting for Multi-Document Question Answering

    本文是LLM系列文章 针对 Knowledge Graph Prompting for Multi Document Question Answering 的翻译 多文档问答中的知识图谱提示 摘要 1 引言 2 符号 3 知识图谱构建 4
  • jquery中获取下拉框的文本值和value值(键值)

  • IDEA 代码没错但是编译出错解决办法

    上午运行项目的时候突然编译器崩了 找了半天原因终于找到了元凶 因为项目是UTF 8格式 但是检查 idea encodings xml是否对某些类指定了charset gbk 如果有的话 删除charset即可 其他的一些寻常的编译错误网上
  • Java高频面试复习题,助你吊打面试官

    前言 2022年对程序员来说是特别严峻的一年 也是大改革的一年 大部分人因为今年 疫情 的原因纷纷离开了自己原有的岗位 也有人抓住机会逆流而上拿到更高的待遇 2022年金九银十已经到来了 试问你进入了自己心仪的企业了吗 拿到自己满意的薪资待
  • Send Mail

    using System using System Web Mail using System Configuration using System Web using System IO using DAL namespace BLL