sudhakarthikeyan Ответов: 1

Почта работает, но я хочу отправить два файла excel каждому другому человеку


Я попробовал свой код следующим образом,

Мой код работает, но я хочу, чтобы первый excel отправлялся одному человеку,а другой excel отправлялся другому.

Мой код выглядит следующим образом

int count = 0;
string connectionstring = "Server=(local);initial catalog=Test;Trusted_Connection=True";
SqlConnection sqlConnection = new SqlConnection(connectionstring);
SqlCommand cmd = new SqlCommand();
SqlDataReader reader;
DataSet ds = new DataSet();
cmd.CommandText = "select * from Empdetails";
cmd.CommandText += " where shifttype = @par";
cmd.Parameters.Add("@par",SqlDbType.Int).Value = j;
cmd.CommandType = CommandType.Text;
cmd.Connection = sqlConnection;
sqlConnection.Open();
reader = cmd.ExecuteReader();
if (reader.HasRows)
{
	string filePath = @"C:\Users\God\Desktop\DataDump\" + j + "Excel.xls";
	System.IO.StreamWriter sw_In = new System.IO.StreamWriter(filePath);
	while (reader.Read())
	{
		if (count == 0)
		{
			for (int i = 0; i < reader.FieldCount; i++)
			{
				sw_In.AutoFlush = true;
				sw_In.Write(reader.GetName(i) + "\t");
			}
			sw_In.Write("\n");
			count = 1;
		}
		for (int i = 0; i < reader.FieldCount; i++)
		{
			sw_In.AutoFlush = true;
			sw_In.Write(reader[i].ToString() + "\t");
		}
		sw_In.Write("\n");
	}
	sw_In.Dispose();
	MailMessage mis = new MailMessage();
	mis.From = new MailAddress("rajesh@gmail.com","Report");
	mis.IsBodyHtml = true;
	mis.To.Add("rajesh@gmail.com");
	mis.Subject = "Data Dump Report";
	mis.Attachments.Add(new Attachment(filePath, "application/vnd.ms-excel"));
	SmtpClient smtpserver = new SmtpClient("smtp.gmail.com"); 
	 
	smtpserver.Credentials = new System.Net.NetworkCredential("rajesh@gmail.com", "Password");
	smtpserver.Host = "smtp.gmail.com";
	smtpserver.Port = 587;
	smtpserver.EnableSsl = true;
	smtpserver.Send(mis);
}
reader.Close();
sqlConnection.Close();


Что я уже пробовал:

Когда я запускаю вышеописанное в папке desktop C 1excel и 2Excel для загрузки в эту папку.

Я отправляю оба файла excel на почту.

Этот файл excel получает почту без проблем.

я получаю как 1Excel, так и 2Excel на [почтовый адрес 1 удален] на эту почту.


Но я хочу, чтобы файл 1Excel был отправлен на [почтовый адрес 1 удален].

И файл 2Excel, который будет отправлен на [почтовый адрес 2 удален].


В моем приведенном выше коде как 1excel, так и 2excel файл получают почту на [почтовый адрес 1 удален].

Для того, какие изменения необходимо сделать в моем коде.

Пожалуйста, помогите мне

Patrice T

Никогда не публикуйте почтовые адреса на общедоступном форуме, если только вы не любите спам.
- удалены почтовые адреса.

[no name]

хорошо, я удалю. пожалуйста, помогите мне дать решение, о котором я уже упоминал.
Спасибо
int count = 0;
connectionString строка = "сервер=(местные);начальный каталог=тест;параметр trusted_connection=истина";
SqlConnection sqlConnection = new SqlConnection(connectionstring);
Команда sqlcommand команду cmd = новый sqlcommand, который();
Читатель SqlDataReader;
DataSet ds = новый набор данных();
cmd. CommandText = " select * from Empdetails";
cmd. CommandText + = " where shifttype = @par";
УМК.Параметры.Добавить("@пар",значения sqldbtype.Инт).Значение = j;
УМК.Свойство Commandtype = Значение Commandtype.Текст;
УМК.Соединение = соединение sqlconnection;
объект sqlconnection.Открыть();
reader = cmd.Метода executereader();
если (читатель.HasRows)
{
строку путь к файлу = @"C:\Users\God\Desktop\DataDump\" + Дж + "Excel.xls";
Системы.ИО.Sw_In модулю записи StreamWriter = новая система.ИО.Модулю записи StreamWriter(путь_к_файлу);
в то время как (читатель. читать())
{
if (count == 0)
{
for (int i = 0; i & lt; reader.FieldCount; i++)
{
sw_In.Автосброс = истина;
sw_In.Пиши (читатель.GetName(i) + " \t");
}
sw_In.Напишите ("\n");
количество = 1;
}
for (int i = 0; i & lt; reader.FieldCount; i++)
{
sw_In.Автосброс = истина;
sw_In.Напишите (читатель[i].ToString () + " \t");
}
sw_In.Напишите ("\n");
}
sw_In.Располагать();
Получить помощь МО = Новый получить помощь();
МИС.From = new MailAddress ("FirstMailid", " Report");
МИС.IsBodyHtml = true;
МИС.Для.Добавить("FirstMailid");
МИС.Тема = "Дамп Данных Отчета";
МИС.Вложения.Add (new Attachment(filePath, " application/vnd. ms-excel"));
SmtpClient smtpserver = новый SmtpClient("smtp.gmail.com");

smtpserver.Учетные данные = new System. Net. NetworkCredential ("Firstmailid", " Password");
smtpserver.Хост = "smtp.gmail.com";
smtpserver.Порт = 587;
smtpserver.EnableSsl = true;
smtpserver.Отправить (mis);
}
читатель.Закрывать();
объект sqlconnection.Закрывать();


Когда я запускаю вышеописанное в папке desktop C 1excel и 2Excel для загрузки в эту папку.

Я отправляю оба файла excel на почту.

Этот файл excel получает почту без проблем.

я получаю как 1Excel, так и 2Excel на [почтовый адрес 1 удален] на эту почту.


Но я хочу, чтобы файл 1Excel был отправлен на [почтовый адрес 1 удален].

И файл 2Excel, который будет отправлен на [почтовый адрес 2 удален].


В моем приведенном выше коде как 1excel, так и 2excel файл получают почту на [почтовый адрес 1 удален].

Для того, какие изменения необходимо сделать в моем коде.

Пожалуйста, помогите мне

Patrice T

Не нужно перепечатывать свой вопрос в комментарии.

Richard MacCutchan

Мы уже несколько раз объясняли оба вопроса, но, похоже, вы либо не читаете ответы, либо просто игнорируете их и перепечатываете более или менее один и тот же вопрос снова.

1 Ответов

Рейтинг:
1

Dave Kreskowiak

Во-первых, вы не пишете файлы Excel. Вы пишете текстовые файлы CSV (значения, разделенные запятыми), за исключением того, что разделитель не является общим, это вкладка. Просто потому, что вы дали файлам расширение ".xls", это не делает его файлом Excel.

Вам нужно разделить этот код на отдельные методы. Эта концепция называется "разделение интересов". Прямо сейчас у вас есть монолитный метод, который делает все. Разбейте это на методы, которые делают одну вещь и только один Тинг. Метод, который экспортирует определенные данные в CSV-файл. Метод, который собирает сообщение электронной почты. Метод, который отправляет сообщение электронной почты. ..... и все остальное, что вам нужно.

Как только вы это выясните, довольно легко использовать код снова и снова, чтобы отправлять электронные письма любому количеству людей с любым контентом, который вы хотите.


Richard MacCutchan

Я говорил ему это много раз, но он просто игнорирует это и задает еще один глупый вопрос, почти такой же, как и все остальные.

Dave Kreskowiak

Да, я только что начал видеть все, что он написал. Я думаю, что это работа по кодированию copy'n'paste, поскольку он, похоже, не понимает простейших частей своего собственного кода.