C# 根据表中的项目发送包含pdf的电子邮件

C# 根据表中的项目发送包含pdf的电子邮件,c#,email,reporting-services,smtp,C#,Email,Reporting Services,Smtp,我有一个程序,我失去了源代码,无法找出我做错了什么,现在我们有一个IP的变化。我想做的是通过一个表格,让它发送电子邮件和相应的报告。你知道怎么回事吗?我没有收到任何错误,但我也没有收到任何电子邮件(是的,SMTP服务器工作正常) 使用系统; 使用System.Collections.Generic; 使用系统组件模型; 使用系统数据; 使用系统诊断; 使用System.Linq; 使用System.ServiceProcess; 使用系统文本; 使用System.IO; 使用System.Web

我有一个程序,我失去了源代码,无法找出我做错了什么,现在我们有一个IP的变化。我想做的是通过一个表格,让它发送电子邮件和相应的报告。你知道怎么回事吗?我没有收到任何错误,但我也没有收到任何电子邮件(是的,SMTP服务器工作正常)

使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统诊断;
使用System.Linq;
使用System.ServiceProcess;
使用系统文本;
使用System.IO;
使用System.Web;
使用System.Net.Mail;
使用System.Data.SqlClient;
使用System.Windows.Forms;
命名空间自动报告
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
DataClasses1DataContext dc=新DataClasses1DataContext();
foreach(dc.ReportsSet1s中的变量项)
{
字符串matchedCaseNumber=item.CaseNumberKey;
(新的MyReportRenderer()).RenderTest(匹配的案例编号);
}
dc.ExecuteCommand(“截断表报告SENT1”);
}
公共类MyReportRenderer
{
私人rs2005.ReportingService 2005 rs;
私有rs2005Execution.ReportExecutionService rsExec;
public void RenderTest(字符串匹配CaseNumber)
{
字符串HistoryID=null;
字符串deviceInfo=null;
字符串编码=string.Empty;
string mimeType=string.Empty;
字符串扩展名=string.Empty;
rs2005Execution.Warning[]warnings=null;
字符串[]streamIDs=null;
rs=新的rs2005.ReportingService2005();
rsExec=新的rs2005Execution.ReportExecutionService();
rs.Credentials=System.Net.CredentialCache.DefaultCredentials;
rsExec.Credentials=System.Net.CredentialCache.DefaultCredentials;
rs.Url=“http://*****/ReportServer\u DEVELOPMENT/ReportService2005.asmx”;
rsExec.Url=“http://***.**/ReportServer\u DEVELOPMENT/ReportExecution2005.asmx”;
尝试
{
//加载所选报告。
rsExec.LoadReport(“/LawDept/LawDeptTIC”,HistoryID);
//设置所需报告的参数。
rs2005Execution.ParameterValue[]参数=新的rs2005Execution.ParameterValue[1];
参数[0]=新的rs2005Execution.ParameterValue();
参数[0]。Name=“CaseNumberKey”;
参数[0]。值=matchedCaseNumber;
rsExec.SetExecutionParameters(参数“en-us”);
//获取报告的pdf格式
Byte[]results=rsExec.Render(“PDF”,deviceInfo,
输出扩展,输出编码,
输出mimeType、输出警告、输出StreamID);
//为电子邮件传递参数
DataClasses1DataContext db=新DataClasses1DataContext();
var matchedBRT=(来自db.GetTable()中的c)
其中c.CaseNumberKey==匹配的CaseNumber
选择c.BRTNumber).SingleOrDefault();
var matchedAdd=(来自db.GetTable()中的c)
其中c.CaseNumberKey==匹配的CaseNumber
选择c.Premises).SingleOrDefault();
var matchedDocument=(来自db.GetTable()中的c)
其中c.DocIDKey==SelectedRow.DocIDKey
选择c.SingleOrDefault();
db.Documents.DeleteOnSubmit(匹配文档);
db.SubmitChanges();
var matchedEmail=(来自db.GetTable()中的c)
其中c.CaseNumberKey==匹配的CaseNumber
选择c.Email).SingleOrDefault();
//发送带有附件的电子邮件
MailMessage=新的MailMessage(“Reports@acmetaxabstracts.com“,matchedEmail,“位于“+matchedAdd”的物业报告,随附上述标题物业的税务信息证明”);
邮件地址副本=新邮件地址(“acmetaxabstracts@gmail.com");
message.CC.Add(副本);
SmtpClient emailClient=新的SmtpClient(“*****.**.**”);
message.Attachments.Add(新的附件(新的MemoryStream(results),String.Format(“{0}”+matchedBRT+”.pdf,“BRT”));
emailClient.Send(message);
//db.reportsSent1s.deleteosubmit(matchedItem);
//db.SubmitChanges();
}
捕获(例外情况除外)
{
控制台写入线(例如消息);
}
}
}
}
} 

好吧,你为什么不反编译你原来的exe/dll呢?我想了一下,但这是一个点击一次的应用程序,我不知道怎么做。他说“@filename不是.NET模块”太棒了,我想出来了。我没有意识到我必须从exe中删除.deploy来反编译它。谢谢
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.IO;
using System.Web;
using System.Net.Mail;
using System.Data.SqlClient;
using System.Windows.Forms;

    namespace AutomatedReporting
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {

                DataClasses1DataContext dc = new DataClasses1DataContext();

                foreach (var item in dc.reportsSent1s)
                {
                    string matchedCaseNumber = item.CaseNumberKey;
                    (new MyReportRenderer()).RenderTest(matchedCaseNumber);


                }
                dc.ExecuteCommand("TRUNCATE TABLE reportsSent1");
            }



            public class MyReportRenderer
               {
                     private rs2005.ReportingService2005 rs;
                     private rs2005Execution.ReportExecutionService rsExec;

            public void RenderTest(String matchedCaseNumber)
            {
                string HistoryID = null;
                string deviceInfo = null;
                string encoding = String.Empty;
                string mimeType = String.Empty;
                string extension = String.Empty;
                rs2005Execution.Warning[] warnings = null;
                string[] streamIDs = null;


                rs = new rs2005.ReportingService2005();
                rsExec = new rs2005Execution.ReportExecutionService();
                rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
                rsExec.Credentials = System.Net.CredentialCache.DefaultCredentials;
                rs.Url = "http://***.***.***.***/ReportServer_DEVELOPMENT/ReportService2005.asmx";
                rsExec.Url = "http://***.***.***.***/ReportServer_DEVELOPMENT/ReportExecution2005.asmx";



                try
                {
                    // Load the selected report.
                    rsExec.LoadReport("/LawDept/LawDeptTIC", HistoryID);

                    // Set the parameters for the report needed.

                    rs2005Execution.ParameterValue[] parameters = new rs2005Execution.ParameterValue[1];
                    parameters[0] = new rs2005Execution.ParameterValue();
                    parameters[0].Name = "CaseNumberKey";
                    parameters[0].Value = matchedCaseNumber;

                    rsExec.SetExecutionParameters(parameters, "en-us");

                    // get pdf of report 
                    Byte[] results = rsExec.Render("PDF", deviceInfo,
                    out extension, out encoding,
                    out mimeType, out warnings, out streamIDs);

                    //pass paramaters for email
                    DataClasses1DataContext db = new DataClasses1DataContext();



                    var matchedBRT = (from c in db.GetTable<vw_ProductClientInfo>()
                                      where c.CaseNumberKey == matchedCaseNumber
                                      select c.BRTNumber).SingleOrDefault();

                    var matchedAdd = (from c in db.GetTable<vw_ProductClientInfo>()
                                      where c.CaseNumberKey == matchedCaseNumber
                                      select c.Premises).SingleOrDefault();



                    var matchedDocument = (from c in db.GetTable<Document>()
                                           where c.DocIDKey == SelectedRow.DocIDKey
                                           select c).SingleOrDefault();

                    db.Documents.DeleteOnSubmit(matchedDocument);
                    db.SubmitChanges();
                    var matchedEmail = (from c in db.GetTable<vw_ProductClientInfo>()
                                        where c.CaseNumberKey == matchedCaseNumber
                                        select c.Email).SingleOrDefault();

                    //send email with attachment
                    MailMessage message = new MailMessage("Reports@acmetaxabstracts.com", matchedEmail, "Report for property located at " + matchedAdd, "Attached is the Tax Information Certificate for the above captioned property");
                    MailAddress copy = new MailAddress("acmetaxabstracts@gmail.com");
                    message.CC.Add(copy);
                    SmtpClient emailClient = new SmtpClient("***.***.***.***");
                    message.Attachments.Add(new Attachment(new MemoryStream(results), String.Format("{0}" + matchedBRT + ".pdf", "BRT")));
                    emailClient.Send(message);

                    //db.reportsSent1s.DeleteOnSubmit(matchedItem);
                    //db.SubmitChanges();
                }

                catch (Exception ex)
                {

                    Console.WriteLine(ex.Message);

                }
            }
        }
        }

    }