From: POSTMASTER@domain.com To: jdoe@domain.com Subject: Message Delivery Failure MailEnable: Message Delivery Failure. The following recipient(s) could not be reached: Recipient: [SMTP: bill@domain.com] Reason: The message could not be delivered because the domain name (domain.com) does not appear to be registered.
From: MAILER-DAEMON@domain.local To: jdoe@localhost Subject: Undeliverable mail: Failed to deliver to ''
// Create POP3 object Pop3 pop = new Pop3(); // Enable logging to file pop.Log.Enabled = true; pop.Log.Filename = @"C:\log.txt"; pop.Log.Clear(); // Connect to POP3 server pop.Connect("mail.domain.com"); pop.Login("bounce", "secret"); // Download headers and bodies of all messages. MailMessageCollection msgs = pop.DownloadMessageHeaders(1, -1, -1); // Loop through all messages in the mailbox foreach (MailMessage msg in msgs) { string strLine = msg.BodyPlainText; Console.WriteLine("From: " + msg.From.Email); // Get failed email address string str_invalid_email = GetInvalidEmailAddressME(msg); // If str_invalid_email is non-empty then failed email // address was found if (str_invalid_email.Length > 0) { // Remove failed email from database RemoveEmailFromDatabase(str_invalid_email); // Display invalid adress Console.WriteLine("Invalid email: " + str_invalid_email); // Delete bounced email from server to avoid // processing it next time pop.DeleteMessage(msg.IndexOnServer); } } // Disconnect from POP3 server pop.Disconnect(); // The function checks whether the message is bounced and extracts // failed address // from bounced message. Valid only for MailEnable servers static string GetInvalidEmailAddressME(MailMessage msg) { string str_invalid_email = msg.BodyPlainText; // Check if this is a bounced message report if (msg.Subject.IndexOf("Delivery Failure") == -1) { return ""; } if (msg.From.ToString().IndexOf("POSTMASTER") == -1) { return ""; } // Now we're sure this is a bounced message report int i_start; i_start = str_invalid_email.IndexOf("SMTP:"); // Check if bounced message report contains "Recipient:" field if (i_start == -1) { return ""; } // Get failed address i_start += 5; i_end = str_invalid_email.IndexOf("]",i_start); str_invalid_email.Substring(i_start, i_end); return str_invalid_email; } // The function checks whether the message is bounced and extracts // failed address // from bounced message. Valid only for Communigate Pro servers static string GetInvalidEmailAddressCP(MailMessage msg) { string str_invalid_email = msg.BodyPlainText; // Check if this is a bounced message report if (msg.Subject.IndexOf("Undeliverable mail") == -1) { return ""; } if (msg.From.ToString().IndexOf("MAILER-DAEMON") == -1) { return ""; } // Now we're sure this is a bounced message report int i_start; i_start = str_invalid_email.IndexOf("to '<"); // Check if bounced message report contains // "Failed to deliver to " field if (i_start == -1) { return ""; } // Get failed address i_start += 5; i_end = str_invalid_email.IndexOf("]",i_start); str_invalid_email.Substring(i_start, i_end); return str_invalid_email; } // This function must remove (or disable) specified // email address from mailing list static void RemoveEmailFromDatabase(string str_invalid_email) { // TODO: Add your code here }
Dim pop As New Pop3 ' Enable logging to file pop.Log.Enabled = True pop.Log.Filename = "C:\log.txt" pop.Log.Clear() ' Connect to POP3 server pop.Connect("mail.domain.com") pop.Login("jdoe", "secret") ' Download headers and bodies for all messages. Dim msgs As MailMessageCollection = pop.DownloadMessageHeaders(1, -1, -1) ' Loop through all messages in the mailbox Dim msg As MailMessage For Each msg In msgs Dim strLine As String = msg.BodyPlainText Console.WriteLine("From: " + msg.From.Email) ' Get failed email address Dim str_invalid_email As String = GetInvalidEmailAddressME(msg) ' If str_invalid_email is non-empty then failed email ' address was found If str_invalid_email.Length > 0 Then 'Remove failed email from database RemoveEmailFromDatabase(str_invalid_email) ' Display invalid address Console.WriteLine("Invalid email: " & str_invalid_email) ' Delete bounced email from server to avoid ' processing it next time pop.DeleteMessage(msg.IndexOnServer) End If Next Console.ReadLine() ' Disconnect from POP3 server pop.Disconnect() ' The function checks whether the message is bounced and extracts ' failed address ' from bounced message. Valid only for MailEnable servers Function GetInvalidEmailAddressME(ByVal msg As MailMessage) As String Dim str_invalid_email As String = msg.BodyPlainText ' Check if this is a bounced message report If msg.Subject.IndexOf("Delivery Failure") = -1 Then Return "" End If If msg.From.ToString().IndexOf("POSTMASTER") = -1 Then Return "" End If ' Now we're sure this is a bounced message report Dim i_start As Integer, i_end As Integer i_start = str_invalid_email.IndexOf("SMTP:") ' Check if bounced message report contains "Recipient:" field If i_start = -1 Then Return "" End If ' Get failed address i_start += 5 i_end = str_invalid_email.IndexOf("]", i_start) str_invalid_email.Substring(i_start, i_end) Return str_invalid_email End Function ' The function checks whether the message is bounced and extracts ' failed address ' from bounced message. Valid only for Communigate Pro servers Function GetInvalidEmailAddressCP(ByVal msg As MailMessage) As String Dim str_invalid_email As String = msg.BodyPlainText ' Check if this is a bounced message report If msg.Subject.IndexOf("Undeliverable mail") = -1 Then Return "" End If If msg.From.ToString().IndexOf("MAILER-DAEMON") = -1 Then Return "" End If ' Now we're sure this is a bounced message report Dim i_start As Integer, i_end As Integer i_start = str_invalid_email.IndexOf("to '<") ' Check if bounced message report contains ' "Failed to deliver to " field If i_start = -1 Then Return "" End If ' Get failed address i_start += 5 i_end = str_invalid_email.IndexOf("]", i_start) str_invalid_email.Substring(i_start, i_end) Return str_invalid_email End Function ' This function must remove (or disable) specified ' email address from mailing list Sub RemoveEmailFromDatabase(ByVal str_invalid_email As String) ' TODO: Add your code here End Sub
import io.javalin.Javalin funmain(args: Array) { val app = Javalin.create().port(7000) app.get("/") { ctx -> ctx.result("Hello World") } }
AutoVue 3D Professional Advanced 提供了对领先的中型 3D CAD 包和主流的 2D CAD 软件的查看和标注的功能。 | |
AutoVue Electro-Mechanical Professional 一款连接EDA和MCAD的文档信息处理控件 | |
一个多用途,多功能的图文浏览,标注,协同作业的应用软件 | |
可以用来浏览、注释、链接以及打印各种文件格式的文件。 | |
AutoVue 2D 可原生查看文档,这就避免了最终用户使用原始程序,或转换文档到中间格式的麻烦。 |
Microsoft正在向Visual Studio 2017 IDE中添加持续交付功能。
Visual Studio扩展的持续交付工具允许开发人员在Visual Studio团队服务ALM平台上设置自动构建、测试和发布管道。它适用于面向Azure应用服务和Azure容器服务的ASP.Net 4和ASP.Net Core应用程序。开发人员可以通过IDE中的通知来监视管道,提醒他们连续集成运行中发生的生成失败信息。
DicomEngine.Startup(); using (DicomDataSet ds = new DicomDataSet()) { //Load DICOM File ds.Load(input, DicomDataSetLoadFlags.None); //Initialize J2K Options DicomJpeg2000Options options = ds.DefaultJpeg2000Options; //Set Options options.CompressionControl = DicomJpeg2000CompressionControl.Ratio; options.CompressionRatio = 50; //Add options to the dataset ds.Jpeg2000Options = options; //Change the transfer syntax to J22K ds.ChangeTransferSyntax(DicomUidType.JPEG2000, 2, ChangeTransferSyntaxFlags.MinimizeJpegSize); //Save Dicom file ds.Save(dest, DicomDataSetSaveFlags.None); //Shut down the DICOM engine DicomEngine.Shutdown(); }