Lulzsec Owner
Lulzsec Owner

Reputation: 15

URI formats are not supported

I'm basically making a mass email sender in C# using Microsoft Visual Studio, the idea is that it uses real email accounts via SMTP to send the emails so they are not marked as spam, but I keep getting the error:

URI formats are not supported. 

Basically the code below retrieves the list of email accounts from my website but throws the error above.

String[] saUsernames = File.ReadAllLines(@"http://mywebsite.com/test/accounts.txt");

I've tried loading the file locally and it works fine so i cant figure out what the issue is, anyone got any ideas as I'm well and truly confused

edit: heres the whole script as something else may be causing the error, ive removed some of the links to my site,etc as its a project in development and i dont want to give away many clues

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");
        }

      }
    }

Upvotes: 1

Views: 15120

Answers (2)

Chris Ruck
Chris Ruck

Reputation: 401

File.ReadAllLines does not support the http schema such as http.

Try instead:

string content;
using (WebClient client = new WebClient())
{
    content = client.DownloadString("http://example.com/accounts.txt");
}

'content' will contain the complete contents of the file. Splitting the content into an array is trivial using the string.Split() function.

Note: WebClient can also reference local files from disk if referenced as such:

    @"file://c:\folder\account.txt"

Upvotes: 0

JuStDaN
JuStDaN

Reputation: 449

File.ReadAllLines does not support a direct URI path as stated in the error message (although it is puzzling how it is working locally), just allocate your path to a string then use that in the request.

string path = @"http://mywebsite.com/test/accounts.txt";
String[] saUsernames = File.ReadAllLines(path);

Edit: You could ditch the @ as there are no characters to escape in your string and just use your original line.

Upvotes: -1

Related Questions