URI-Formate werden nicht unterstützt
Ich bin im Grunde macht eine Masse E-Mail-Absender in C# mit Microsoft Visual Studio, die Idee ist, dass es verwendet echte E-Mail-Konten via SMTP zum senden von E-Mails, damit Sie nicht als spam markiert, aber ich erhalte die Fehlermeldung:
URI formats are not supported.
Grundsätzlich der folgende code ruft die Liste der E-Mail-Konten von meiner website wirft aber den oben genannten Fehler.
String[] saUsernames = File.ReadAllLines(@"http://mywebsite.com/test/accounts.txt");
Ich habe versucht, laden Sie die Datei lokal, und es funktioniert gut, so dass ich kann nicht herausfinden, was das Problem ist, wer irgendwelche Ideen, wie ich bin gut und wirklich verwirrt
edit: hier ist das gesamte Skript als etwas anderes kann die Ursache des Fehlers, ive entfernt einige der links zu meiner Website,usw. als ein Projekt in der Entwicklung und ich will nicht Weg zu geben viele Hinweise
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Mail;
using System.Threading;
using System.IO;
namespace NecroBomber
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int iTimeOutValue = 100;
int iSentAmount = 0;
SmtpClient client = new SmtpClient();
MailMessage mail = new MailMessage();
String[] saUsernames = File.ReadAllLines(@"http://example.com/accounts.txt");
WebClient wcUpdates = new WebClient();
string sMasterPassword = "testpassword";
string sLastUsername = "";
int iTimeOutWebRequest = 0;
private void btnClick(object sender, EventArgs e)
{
Button btnCurrent = ((Button)sender);
if (btnCurrent.Tag.ToString() == "SendMail")
{
prbSentStatus.Maximum = ((int)nudAmount.Value * saUsernames.Length);
Thread tStart = new Thread(SendMail);
tStart.Start();
}
else if (btnCurrent.Tag.ToString() == "AddAccount")
{
AddNewAccount();
}
else if (btnCurrent.Tag.ToString() == "Update")
{
try
{
if (wcUpdates.DownloadString(@"http://example.com/version.txt") != "1.0.0")
{
if (dlgSaveUpdate.ShowDialog() == DialogResult.OK)
{
wcUpdates.DownloadFile(@"http://example.com/new.exe", dlgSaveUpdate.FileName);
}
}
else
{
MessageBox.Show("Your version is up to date!", "Information!");
}
}
catch
{
}
}
}
private void SendMail()
{
int iToSend = Convert.ToInt32(nudAmount.Value);
for (int i = 0; i < saUsernames.Length; i++)
{
GrabMailDetails(i);
client.Credentials = new NetworkCredential(saUsernames[i], sMasterPassword);
if (saUsernames[i] != sLastUsername)
{
if (saUsernames[i].EndsWith("@yahoo.com"))
{
client.Host = "smtp.mail.yahoo.com";
client.Port = 587;
client.EnableSsl = false;
}
else if (saUsernames[i].EndsWith("@gmail.com"))
{
client.Host = "smtp.gmail.com";
client.Port = 25;
client.EnableSsl = true;
}
else if (saUsernames[i].EndsWith("@hotmail.co.uk"))
{
client.Host = "smtp.live.com";
client.Port = 587;
client.EnableSsl = true;
}
else if (saUsernames[i].EndsWith("@outlook.com"))
{
client.Host = "smtp.live.com";
client.Port = 587;
client.EnableSsl = true;
}
else if (saUsernames[i].EndsWith("@hotmail.com"))
{
client.Host = "smtp.live.com";
client.Port = 587;
client.EnableSsl = true;
}
else if (saUsernames[i].EndsWith("@aol.co.uk"))
{
client.Host = "smtp.aol.com";
client.Port = 587;
client.EnableSsl = true;
}
else if (saUsernames[i].EndsWith("@aol.com"))
{
client.Host = "smtp.aol.com";
client.Port = 587;
client.EnableSsl = true;
}
}
else
{
}
sLastUsername = saUsernames[i];
for (int x = 0; x < iToSend; x++)
{
try
{
client.Send(mail);
iSentAmount++;
}
catch
{
MessageBox.Show("Maximum emails today sent from this SMTP server has been reached.\nAccount name: " + sLastUsername, "Error!");
goto JMP;
}
}
JMP: ;
}
}
private void GrabMailDetails(int count)
{
try
{
mail = new MailMessage();
mail.Body = tbBody.Text;
mail.Subject = tbSubject.Text;
mail.From = new MailAddress(saUsernames[count]);
mail.To.Add(tbTarget.Text);
{
}
if (rbHigh.Checked)
{
mail.Priority = MailPriority.High;
}
else if (rbLow.Checked)
{
mail.Priority = MailPriority.Low;
}
else if (rbNorm.Checked)
{
mail.Priority = MailPriority.Normal;
}
}
catch
{
}
}
private void AddNewAccount()
{
String[] saCurrentAccounts = File.ReadAllLines(@"Accounts.txt");
string sAddNewAccount = "";
for (int i = 0; i < saCurrentAccounts.Length; i++)
{
sAddNewAccount += saCurrentAccounts[i] + Environment.NewLine;
}
}
private void timeUpdate_Tick(object sender, EventArgs e)
{
prbSentStatus.Value = iSentAmount;
lblEmailSentCount.Text = "Emails Sent: " + iSentAmount;
iTimeOutWebRequest++;
if (iTimeOutWebRequest == iTimeOutValue)
{
}
}
private void Form1_Load(object sender, EventArgs e)
{
timeUpdate.Start();
lblMultiple.Text = "x " + saUsernames.Length;
this.Text = "test - " + Environment.UserName;
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
if (wcUpdates.DownloadString(@"update.com/version") != "1.0.0")
{
if (dlgSaveUpdate.ShowDialog() == DialogResult.OK)
{
MessageBox.Show("Updating LulzBomber. Please wait a few minutes", "Information!");
wcUpdates.DownloadFile(@"update.com/version", dlgSaveUpdate.FileName);
}
}
else
{
MessageBox.Show("Your version is up to date!", "Information!");
}
}
private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show("Created by ***", "About");
}
}
}
- Mit mehr edle Ziel solcher Beispielcode, der zeigt das problem sein könnte, ok. Mit Ihr man würde besser zeigen, Rechte Anstrengung ist ein gutes Beispiel - bitte prüfen Sie, out sscce.org zur Verbesserung Ihrer Frage.
- Die Fehlermeldung scheint ziemlich klar und kurz zu mir; Sie können Sie nicht verwenden, die URI-Pfade mit der
File
Klassen. Sie benötigenWebClient
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Datei.ReadAllLines nicht für eine direkte URI-Pfad angegeben in der Fehlermeldung (obwohl es rätselhaft ist, wie es arbeitet lokal), nur reservieren Sie Ihren Weg zu einem string, dann verwenden Sie, die in der Anfrage.
Edit: Man könnte Graben die @ als es keine Zeichen zu entkommen, in Ihrem string und verwenden Sie einfach Ihre original-line.
Datei.ReadAllLines nicht unterstützt das http-schema wie http.
Versuchen, statt:
'Inhalt' enthält den kompletten Inhalt der Datei. Die Aufteilung der Inhalte in ein array, ist einfach mit dem string.Split () - Funktion.
Hinweis: der WebClient kann auch verweisen auf lokale Dateien von der Festplatte, wenn referenzierte als solche: