public void StartSend(string mlid)
        {
            String     vbCrLf = "\r\n";
            String     vbTab  = "\t";
            NewMessage msg;
            inline     imagescid = new inline();

            string[] cids;
            imagescid.cidinclude(ref mailbody, WebEditorUtils.WebUserFilesPath, out cids);
            msg = new NewMessage(fromad, subject, mailbody, NewMessage.MessageType.Html);
            msg.AddHeader("X-Originating-IP", Request.UserHostAddress);
            msg.AddHeader("X-Originating-UA", Request.UserAgent);

            msg.AddHeader("Received", "from " + Request.UserHostName + " [" + Request.UserHostAddress + "]" +
                          vbCrLf + vbTab + "by " + Request.Url.Host + " [" + Request.ServerVariables["LOCAL_ADDR"] + "] (Digita.MimeParser) via HTTP;" +
                          vbCrLf + vbTab + DateTime.UtcNow.ToString(@"ddd, dt MMM yyyy HH\:mm\:ss", new CultureInfo("en-US")) + " +0000");

            msg.AddRecipient("*****@*****.**", NewMessage.RecipientTypes.To);


            foreach (string ss in cids)
            {
                if (ss != null)
                {
                    string localfilename;
                    localfilename = Path.Combine(WebEditorUtils.RootUserFilesPath, ss.Replace('/', Path.DirectorySeparatorChar));
                    msg.AddAttachment(localfilename, ss.Substring(ss.LastIndexOf("/") > 0 ? ss.LastIndexOf("/") + 1 : ss.LastIndexOf("/")), StaticFunctions.ContentTypeMatch(ss), NewMessage.Encodings.Base64, true);
                }
            }

            DataTable dtAttach = DatabaseConnection.CreateDataset("SELECT FILEMANAGER.ID, FILEMANAGER.FILENAME, FILEMANAGER.GUID FROM FILEMANAGER RIGHT OUTER JOIN ML_ATTACHMENT ON FILEMANAGER.ID = ML_ATTACHMENT.FILEID WHERE ML_ATTACHMENT.MLID = " + int.Parse(ViewState["mailid"].ToString())).Tables[0];

            if (dtAttach.Rows.Count > 0)
            {
                string fileName;
                fileName = ConfigSettings.DataStoragePath + Path.DirectorySeparatorChar + dtAttach.Rows[0]["guid"].ToString() + Path.GetExtension(dtAttach.Rows[0]["filename"].ToString());
                if (File.Exists(fileName))
                {
                    msg.AddAttachment(fileName, dtAttach.Rows[0]["filename"].ToString(), "application/octet-stream", NewMessage.Encodings.Base64, false);
                }
            }


            string templatePath          = Path.Combine(Request.PhysicalApplicationPath + "template", "mailing");
            string templateFilename      = "tustena_signature.htm";
            string templateFileNamePlain = "tustena_signature.txt";
            string signature             = String.Empty;
            string signaturePlain        = String.Empty;

            if (File.Exists(Path.Combine(Path.Combine(templatePath, UC.CultureSpecific), templateFilename)))
            {
                templateFilename = Path.Combine(Path.Combine(templatePath, UC.CultureSpecific), templateFilename);
            }
            else
            {
                templateFilename = Path.Combine(templatePath, templateFilename);
            }
            if (File.Exists(templateFilename))
            {
                StreamReader objReader = new StreamReader(templateFilename);
                signature = objReader.ReadToEnd();
                objReader.Close();
            }

            if (File.Exists(Path.Combine(Path.Combine(templatePath, UC.CultureSpecific), templateFileNamePlain)))
            {
                templateFileNamePlain = Path.Combine(Path.Combine(templatePath, UC.CultureSpecific), templateFileNamePlain);
            }
            else
            {
                templateFileNamePlain = Path.Combine(templatePath, templateFileNamePlain);
            }
            if (File.Exists(templateFileNamePlain))
            {
                StreamReader objReader = new StreamReader(templateFileNamePlain);
                signaturePlain = objReader.ReadToEnd();
                objReader.Close();
            }

            DataRow myCompany;

            myCompany = DatabaseConnection.CreateDataset("SELECT COMPANYNAME,ADDRESS,ZIPCODE,CITY,STATE FROM TUSTENA_DATA").Tables[0].Rows[0];

            signature = signature.Replace("%COMPANY%", myCompany[0].ToString());
            signature = signature.Replace("%ADDRESS%", myCompany[1].ToString());
            signature = signature.Replace("%CAP%", myCompany[2].ToString());
            signature = signature.Replace("%COUNTRY%", myCompany[3].ToString());
            signature = signature.Replace("%STATE%", myCompany[4].ToString());
            signature = signature.Replace("%MLID%", mlid);

            signaturePlain = signaturePlain.Replace("%COMPANY%", myCompany[0].ToString());
            signaturePlain = signaturePlain.Replace("%ADDRESS%", myCompany[1].ToString());
            signaturePlain = signaturePlain.Replace("%CAP%", myCompany[2].ToString());
            signaturePlain = signaturePlain.Replace("%COUNTRY%", myCompany[3].ToString());
            signaturePlain = signaturePlain.Replace("%STATE%", myCompany[4].ToString());
            signaturePlain = signaturePlain.Replace("%MLID%", mlid);

            msg.AddSignature(signature, signaturePlain);
            string message;

            switch (ConfigSettings.SpoolFormat)
            {
            case "xmail":
                message = msg.ToString(NewMessage.MessageFormats.XMailSpool);
                break;

            case "mssmtp":
                message = msg.ToString(NewMessage.MessageFormats.MSSMTPSpool);
                break;

            default:
                message = msg.ToString(NewMessage.MessageFormats.RFC822);
                break;
            }

            SpoolMail(message);

            if (CreateActivity.Checked)
            {
                CreateMailActivity();
            }
            if (ViewState["fromwelcome"] != null && isGoBack)
            {
                GoBackClick();
            }
        }
示例#2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string       template;
            string       templateUser;
            String       vbCrLf = "\r\n";
            String       vbTab  = "\t";
            StreamReader objReader;

            objReader = new StreamReader(Request.PhysicalApplicationPath + "template" + Path.DirectorySeparatorChar + "didis.txt");
            template  = objReader.ReadToEnd();
            objReader.Close();

            DataSet myDataSet = DatabaseConnection.CreateDataset("SELECT ID,COMPANYNAME,EMAIL FROM BASE_COMPANIES WHERE (CATEGORIES LIKE '%|93|%') ORDER BY COMPANYNAME");

            foreach (DataRow dr in myDataSet.Tables[0].Rows)
            {
                templateUser = template;
                string user     = String.Empty;
                string password = String.Empty;
                user     = DatabaseConnection.SqlScalar("SELECT FIELDVAL FROM ADDEDFIELDS_CROSS WHERE (IDRIF = 31) AND (ID = " + dr["id"].ToString() + ")");
                password = DatabaseConnection.SqlScalar("SELECT FIELDVAL FROM ADDEDFIELDS_CROSS WHERE (IDRIF = 32) AND (ID = " + dr["id"].ToString() + ")");

                templateUser = templateUser.Replace("[companyname]", dr["companyname"].ToString());
                templateUser = templateUser.Replace("[user]", user);
                templateUser = templateUser.Replace("[password]", password);

                NewMessage msg;

                msg = new NewMessage(new EmailAddress("*****@*****.**"), "Dati Didis", templateUser, NewMessage.MessageType.Plain);
                msg.AddHeader("X-Originating-IP", Request.UserHostAddress);
                msg.AddHeader("X-Originating-UA", Request.UserAgent);

                msg.AddHeader("Received", "from " + Request.UserHostName + " [" + Request.UserHostAddress + "]" +
                              vbCrLf + vbTab + "by " + Request.Url.Host + " [" + Request.ServerVariables["LOCAL_ADDR"] + "] (Digita.MimeParser) via HTTP;" +
                              vbCrLf + vbTab + DateTime.UtcNow.ToString(@"ddd, dd MMM yyyy HH\:mm\:ss", new CultureInfo("en-US")) + " +0000");


                msg.AddRecipient(dr["email"].ToString().Trim(), NewMessage.RecipientTypes.To);

                TextWriter MailFile = File.CreateText(
                    Path.Combine(
                        Request.PhysicalApplicationPath,
                        "mailinglist" + Path.DirectorySeparatorChar + "xmail" + Path.DirectorySeparatorChar + "spool" + Path.DirectorySeparatorChar + "temp" + Path.DirectorySeparatorChar + msg.messageID));

                Response.Clear();
                Response.Write("processing: \"" + dr["companyname"].ToString() + "\"<br>");
                Response.Flush();
                try
                {
                    string lineToWrite = msg.ToString(NewMessage.MessageFormats.XMailSpool);
                    lineToWrite = lineToWrite.Replace("=?utf-7?Q??=", "");
                    lineToWrite = lineToWrite.Replace("=?utf-7?Q?", "");
                    lineToWrite = lineToWrite.Replace("?=", "");


                    MailFile.WriteLine(lineToWrite);
                    MailFile.Close();


                    Response.Clear();
                    Response.Write("writing: \"" + dr["email"].ToString() + "\";\"" + dr["companyname"].ToString() + "\";\"" + user + "\";\"" + password + "\"<br>");
                    Response.Flush();
                }
                catch
                {
                    Response.Clear();
                    Response.Write("error writing: <b>" + dr["companyname"].ToString() + "</b><br>");
                    Response.Flush();
                }
            }
        }