Exemple #1
0
        public static bool Send(MailMessage message)
        {
            IPHostEntry IPhst = Dns.GetHostEntry(SmtpServer);
            IPEndPoint  endPt = new IPEndPoint(IPhst.AddressList[0], SmtpPort);
            Socket      s     = new Socket(endPt.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            Console.WriteLine("connecting..........");
            s.Connect(endPt);
            Console.WriteLine("connected........");

            string msg = "";

            msg = msg + message.From + "\n";
            msg = msg + message.To + "\n";
            msg = msg + message.Subject + "\n";

            int attch_count = 0;

            if (message.Attachments.Count > 0)
            {
                attch_count = message.Attachments.Count;
            }
            msg = msg + attch_count + "\n";

            if (attch_count > 0)
            {
                foreach (object o in message.Attachments)
                {
                    MailAttachment a = o as MailAttachment;
                    //int pos = a.Filename.LastIndexOf('\\');
                    char[] delim = new char[1];
                    delim[0] = '\\';
                    string[] nameParts = a.Filename.Split(delim);
                    //nt count = a.Filename.Length - (pos+1);
                    //msg = msg + a.Filename.Substring(pos+1, count) + "\n";
                    string filename = nameParts[nameParts.Length - 1];
                    filename = Path.GetFileName(a.Filename);
                    msg      = msg + filename + "\n";
                }
            }

            msg = msg + message.Body;

            Senddata(s, msg, false);
            if (Check_Response(s, SMTPResponse.MSGLEN_SUCCESS))
            {
                //MessageBox.Show("length acked");
            }

            if (message.Attachments.Count > 0)
            {
                foreach (object o in message.Attachments)
                {
                    MailAttachment a = o as MailAttachment;
                    byte[]         binaryData;
                    if (a != null)
                    {
                        FileInfo f = new FileInfo(a.Filename);

                        FileStream fs        = f.OpenRead();
                        int        chunksize = 600000;

                        for (int j = 0; j < fs.Length; j = j + chunksize)
                        {
                            int count = chunksize;
                            if ((j + count) > fs.Length)
                            {
                                count = (int)(fs.Length - (long)j);
                            }
                            int bytesRead = 0;
                            binaryData = null;
                            binaryData = new Byte[count];
                            fs.Seek((long)j, SeekOrigin.Begin);
                            while (bytesRead < count)
                            {
                                int bRead = fs.Read(binaryData, bytesRead, count - bytesRead);
                                bytesRead = bytesRead + bRead;
                            }

                            string base64String = System.Convert.ToBase64String(binaryData, 0, binaryData.Length);

                            SendMsgPart(s, base64String);
                        }
                        SendMsgPart(s, "__done__");
                        fs.Close();
                    }
                }
            }



            return(true);
        }
Exemple #2
0
        private void cmdSend_Click(object sender, EventArgs e)
        {
            SMTP.SmtpDirect.SmtpServer= "10.108.7.138";
            SMTP.SmtpDirect.SmtpServer = txtSmtp.Text;
            SMTP.SmtpDirect.SmtpPort = Int32.Parse(txtPort.Text);

            MailMessage message =new MailMessage();
            message.Body = txtBody.Text;
            message.From = txtFrom.Text;
            message.To = txtTo.Text;
            message.Subject = txtSubject.Text;

            if (txtAttachment.Text != "")
            {
                MailAttachment attachment = new MailAttachment(txtAttachment.Text);
                message.Attachments.Add(attachment);
            }

            if(SMTP.SmtpDirect.Send(message))
            {
                MessageBox.Show("Sent OK");
            }
            else
            {
                MessageBox.Show("Something BAD Happened!");
            }
            txtTo.Text = "";
            txtFrom.Text = "";
            txtSubject.Text = "";
            txtAttachment.Text = "";
            txtSmtp.Text = "";
            txtPort.Text = "";
            txtBody.Text = "";
        }
Exemple #3
0
        public static bool Send(MailMessage message)
        {
            IPHostEntry IPhst = Dns.Resolve(SmtpServer);
            IPEndPoint  endPt = new IPEndPoint(IPhst.AddressList[0], 25);
            Socket      s     = new Socket(endPt.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            s.Connect(endPt);

            if (!Check_Response(s, SMTPResponse.CONNECT_SUCCESS))
            {
                s.Close();
                return(false);
            }

            Senddata(s, string.Format("HELO {0}\r\n", Dns.GetHostName()));
            if (!Check_Response(s, SMTPResponse.GENERIC_SUCCESS))
            {
                s.Close();
                return(false);
            }

            Senddata(s, string.Format("MAIL From: {0}\r\n", message.From));
            if (!Check_Response(s, SMTPResponse.GENERIC_SUCCESS))
            {
                s.Close();
                return(false);
            }

            string _To = message.To;

            string[] Tos = _To.Split(new char[] { ';' });
            foreach (string To in Tos)
            {
                Senddata(s, string.Format("RCPT TO: {0}\r\n", To));
                if (!Check_Response(s, SMTPResponse.GENERIC_SUCCESS))
                {
                    s.Close();
                    return(false);
                }
            }

            if (message.Cc != null)
            {
                Tos = message.Cc.Split(new char[] { ';' });
                foreach (string To in Tos)
                {
                    Senddata(s, string.Format("RCPT TO: {0}\r\n", To));
                    if (!Check_Response(s, SMTPResponse.GENERIC_SUCCESS))
                    {
                        s.Close();
                        return(false);
                    }
                }
            }

            StringBuilder Header = new StringBuilder();

            Header.Append("From: " + message.From + "\r\n");
            Tos = message.To.Split(new char[] { ';' });
            Header.Append("To: ");
            for (int i = 0; i < Tos.Length; i++)
            {
                Header.Append(i > 0 ? "," : "");
                Header.Append(Tos[i]);
            }
            Header.Append("\r\n");
            if (message.Cc != null)
            {
                Tos = message.Cc.Split(new char[] { ';' });
                Header.Append("Cc: ");
                for (int i = 0; i < Tos.Length; i++)
                {
                    Header.Append(i > 0 ? "," : "");
                    Header.Append(Tos[i]);
                }
                Header.Append("\r\n");
            }
            Header.Append("Date: ");
            Header.Append(DateTime.Now.ToString("ddd, d MMM yyyy H:m:s z"));
            Header.Append("\r\n");
            Header.Append("Subject: " + message.Subject + "\r\n");
            Header.Append("X-Mailer: SMTPDirect v1\r\n");
            string importance = null;

            if (message.Priority == MailPriority.High)
            {
                importance = "high";
            }
            else if (message.Priority == MailPriority.Low)
            {
                importance = "low";
            }

            if (importance != null)
            {
                Header.Append("Importance: " + importance + "\r\n");
            }
            string MsgBody = message.Body;

            if (!MsgBody.EndsWith("\r\n"))
            {
                MsgBody += "\r\n";
            }
            if (message.Attachments.Count > 0 || message.BodyFormat == MailFormat.Html)
            {
                Header.Append("MIME-Version: 1.0\r\n");
                Header.Append("Content-Type: multipart/mixed; boundary=unique-boundary-1\r\n");
                Header.Append("\r\n");
                Header.Append("This is a multi-part message in MIME format.\r\n");
                StringBuilder sb = new StringBuilder();
                sb.Append("--unique-boundary-1\r\n");
                string type = message.BodyFormat == MailFormat.Text ? "plain" : "html";
                sb.Append(string.Format("Content-Type: text/{0}\r\n", type));
                sb.Append("Content-Transfer-Encoding: 7Bit\r\n");
                sb.Append("\r\n");
                sb.Append(MsgBody + "\r\n");
                sb.Append("\r\n");

                foreach (object o in message.Attachments)
                {
                    MailAttachment a = o as MailAttachment;
                    byte[]         binaryData;
                    if (a != null)
                    {
                        FileInfo f = new FileInfo(a.Filename);
                        sb.Append("--unique-boundary-1\r\n");
                        sb.Append("Content-Type: application/octet-stream; file=" + f.Name + "\r\n");
                        sb.Append("Content-Transfer-Encoding: base64\r\n");
                        sb.Append("Content-Disposition: attachment; filename=" + f.Name + "\r\n");
                        sb.Append("\r\n");
                        FileStream fs = f.OpenRead();
                        binaryData = new Byte[fs.Length];
                        long bytesRead = fs.Read(binaryData, 0, (int)fs.Length);
                        fs.Close();
                        string base64String = Convert.ToBase64String(binaryData, 0, binaryData.Length);

                        for (int i = 0; i < base64String.Length;)
                        {
                            int nextchunk = 100;
                            if (base64String.Length - (i + nextchunk) < 0)
                            {
                                nextchunk = base64String.Length - i;
                            }
                            sb.Append(base64String.Substring(i, nextchunk));
                            sb.Append("\r\n");
                            i += nextchunk;
                        }
                        sb.Append("\r\n");
                    }
                }
                MsgBody = sb.ToString();
            }

            Senddata(s, ("DATA\r\n"));
            if (!Check_Response(s, SMTPResponse.DATA_SUCCESS))
            {
                s.Close();
                return(false);
            }
            Header.Append("\r\n");
            Header.Append(MsgBody);
            Header.Append(".\r\n");
            Header.Append("\r\n");
            Header.Append("\r\n");
            Senddata(s, Header.ToString());
            if (!Check_Response(s, SMTPResponse.GENERIC_SUCCESS))
            {
                s.Close();
                return(false);
            }

            Senddata(s, "QUIT\r\n");
            Check_Response(s, SMTPResponse.QUIT_SUCCESS);
            s.Close();
            return(true);
        }