Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C#
I want to develop a C#.Net window application to save faxes in local drive. Is this possible using C#. Please help
Posted 29-Sep-11 6:10am
anjali21.3K
Comments
Rob Philpott at 29-Sep-11 12:34pm
   
FAX, its just a TIF image isn't it?
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

Have you tried google to check it out?
 
http://www.google.nl/?q=c%23+fax[^]
 
Good luck!
  Permalink  
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 2

  Permalink  
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 3

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.Collections;
using System.Net.Mail;
using Lesnikowski.Client;
using Lesnikowski.Client.IMAP;
using Lesnikowski.Mail;
using Lesnikowski.Mail.Fluent;
using Lesnikowski.Mail.Headers;
using Lesnikowski.Mail.Headers.Constants;
using System.IO;
using System.Drawing.Imaging;
using System.Diagnostics;
using System.Drawing.Drawing2D;
using TallComponents.PDF.Rasterizer;
using TallComponents.PDF.Rasterizer.Configuration;
using System.Text.RegularExpressions;
 
namespace AHA_Fax_Downloader
{
public partial class Attach_Download : Form
{
 
public static int counter = 0;
Document document = null;
 

public Attach_Download()
{
InitializeComponent();
}
 

List uids;
public void getmailbox()
{
try
{
using (Imap imap = new Imap())
{
//imap.Connect("smtp.gmail.com");
//imap.Login("software@gmail.com", "A99");
imap.Connect("smtp.gmail.com");
imap.Login("ahafax@gmail.com", "a6789");
imap.SelectInbox();
uids = imap.SearchFlag(Flag.All);
if (uids.Count < 1)
{
txtNoFax.Text = "0";
MessageBox.Show("No Faxes Available");
}
else
{
txtNoFax.Text = uids.Count.ToString();
int i = 0;
dgvmails.Rows.Clear();
foreach (long uid in uids)
{
//counter = counter + 1;
//if (counter == 11)
//{
// break;
 
//}
 
dgvmails.Rows.Add();
//for (int i = 0; i < dgvmails.Rows.Count; i++)
//{
string eml = imap.GetMessageByUID(uid);
IMail email = new MailBuilder()
.CreateFromEml(eml);
dgvmails.Rows[i].Cells[1].Value = email.Sender.ToString();
dgvmails.Rows[i].Cells[2].Value = email.Subject.ToString();
dgvmails.Rows[i].Cells[3].Value = String.Format("{0:MM/dd/yyyy}", email.Date);
dgvmails.Rows[i].Cells[4].Value = uid.ToString();
i++;
//}
}
gridrowcolor(dgvmails, dgvmails.Rows.Count);
}
 
}
}
catch (Exception err)
{
}
}
private void Attach_Download_Load(object sender, EventArgs e)
{

lbluser.Text = "Welcome :" + " " + LoginForm.user.ToString();
try
{
lbldate.Text = String.Format("{0:dd-MMMM-yyyy}", System.DateTime.Now);// System.DateTime.Now.ToShortDateString();
Directory.Delete(@"C:\TempDownloads", true);
}
catch (Exception err)
{
}

}
string currentdt = String.Format("{0:dd-MM-yyyy}", System.DateTime.Now);
public void createPatientList()
{
string dirStr2 = "c:/PatientList";
 
string str = "c:/PatientList/" + currentdt.ToString();
 
if (Directory.Exists(dirStr2))
{
 
}
else
{
Directory.CreateDirectory(dirStr2);
 
}
 
if (Directory.Exists(str))
{
 
}
else
{
Directory.CreateDirectory(str);
 
}
 

string str1 = "c:/TempDownloads/ImageFiles";
if (Directory.Exists(str1))
{
 
}
else
{
Directory.CreateDirectory(str1);
 
}
 
string str2 = "c:/TempDownloads/TempFiles";
if (Directory.Exists(str2))
{
 
}
else
{
Directory.CreateDirectory(str2);
 
}
}
 
public static string Extracttext(string Url)
{
if (Url.Contains(@"Patient Name: "))
{
Url = Url.Split(new string[] { "Patient Name: " }, 2, StringSplitOptions.None)[1];
}
else if (Url.Contains(@"Pt. Name: "))
{
Url = Url.Split(new string[] { "Pt. Name: " }, 2, StringSplitOptions.None)[1];
}
else if (Url.Contains(@"PATIENT NAME: "))
{
Url = Url.Split(new string[] { "PATIENT NAME: " }, 2, StringSplitOptions.None)[1];
}
else if (Url.Contains(@"PATIENT: "))
{
Url = Url.Split(new string[] { "PATIENT: " }, 2, StringSplitOptions.None)[1];
}
else
{
Url = "";
}
return Url.Split('\r')[0];
}
 

private void btnsave_Click(object sender, EventArgs e)
{

}
 

int getDPI()
{
return 96;
throw new Exception("Unsupported DPI selected.");
}
 
TiffCompression getCompression()
{

return TiffCompression.None;
throw new Exception("Unsupported Compression selected.");
}

 
private void Attach_Download_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
 
private void btnload_Click(object sender, EventArgs e)
{
pb.Maximum=20;
pb.Value = 5;
// lblmessage.Visible = true;
// lblmessage.Text = "Please Wait while loading list of faxes";
getmailbox();
// lblmessage.Visible = false;

pb.Value = 0;

}
 
private void btnSaveAll_Click(object sender, EventArgs e)
{
pb.Maximum = 20;
pb.Value = 5;
// lblmessage.Text = "Please wait while Downloading Faxes";
try
{
if (MessageBox.Show("Are you sure to Download All Faxes", "AHA Fax Downloader", MessageBoxButtons.YesNo, MessageBoxIcon.Question)==System.Windows.Forms.DialogResult.Yes)
{
//Please purchase Mail.dll license at http://www.lesnikowski.com/mail/
string dirStr = "c:/Downloads";
 

string currentdt = String.Format("{0:dd-MM-yyyy}", System.DateTime.Now);
string str = "c:/Downloads/" + currentdt.ToString();
string dirStr2 = "c:/TempDownloads/TempFiles";
 
if (Directory.Exists(dirStr))
{
 

}
else
{
 
Directory.CreateDirectory(dirStr);
 
}
 
if (Directory.Exists(str))
{
 
}
else
{
Directory.CreateDirectory(str);
}
 
if (Directory.Exists(str))
{
 
using (Imap imap = new Imap())
{
imap.Connect("smtp.gmail.com");
//imap.Login("software@gmail.com", "A99");
imap.Login("ahafax@gmail.com", "ah@99");
 
imap.SelectInbox();
List uids = imap.SearchFlag(Flag.All);
if (uids.Count < 1)
{
MessageBox.Show("MailBox is empty");
}
else
{
 
foreach (long uid in uids)
{
counter = counter + 1;
if (counter == 11)
{
break;
 
}
string eml = imap.GetMessageByUID(uid);
IMail email = new MailBuilder().CreateFromEml(eml);
 
// save all attachments to disk
email.Attachments.ForEach(mime => mime.Save(str + "/" + mime.SafeFileName));
createPatientList();
email.Attachments.ForEach(mime => mime.Save(dirStr2 + "/" + +uid + ".pdf"));
 
//Convert pdf to .tiff

string path = @"c:\TempDownloads\TempFiles\" + uid + ".pdf";//+ txtPatientNm.Text + "-" + String.Format("{0:MM-dd-yyyy}", dateTimePicker1.Text.ToString()) + ".pdf";
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
document = new Document(file);
}

 
ConvertToTiffOptions tiffOptions = new ConvertToTiffOptions(getDPI(), getCompression());
 
string tiffile = @"c:\TempDownloads\ImageFiles\" + uid + ".tiff";//Image Files\" + txtPatientNm.Text + "-" + String.Format("{0:MM-dd-yyyy}", dateTimePicker1.Text.ToString()) + ".tiff";
using (FileStream file = new FileStream(tiffile, FileMode.Create, FileAccess.Write))
{
document.ConvertToTiff(file, tiffOptions);
file.Close();
 
}

//OCR(get Patient Name)
try
{
//CheckFileType(@"c:\TempDownloads\ImageFiles\");
//******************************************
 
string fileExtension = ".tiff";
//get file name without extenstion
string fileName = tiffile.Replace(fileExtension, string.Empty);
 
//Check for JPG File Format
if (fileExtension == ".tiff" || fileExtension == ".TIFF") // or // ImageFormat.Jpeg.ToString()
{
 
try
{
//OCR Operations ...
 
MODI.Document md = new MODI.Document();
md.Create(Convert.ToString(tiffile));
md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
string myText = "";
 
for (int i = 0; i < md.Images.Count; i++)
{
MODI.Image image = (MODI.Image)md.Images[i];
 
myText = myText + " " + image.Layout.Text.ToString();
 

}
myText = myText.Replace("'", "''").ToString();
 
//********************
 

txtPatientNm.Text = Extracttext(myText).ToString();
 

}
catch (Exception)
{
//MessageBox.Show("This Image hasn't a text or has a problem",
//"OCR Notifications",
//MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
 

//*************************************
//***************************************
string ln = "";
string fn = "";
// File.Delete(@"C:\PatientList2\ImageFiles\temp.tiff");
 
string Message = txtPatientNm.Text.ToString();
string[] Record = Regex.Split(Message.Trim(), " ");
if (Record.Length > 1)
{
ln = Record[1].ToString();
fn = Record[0].ToString();
}
 
string strPList = "c:/PatientList/"+ currentdt +'/';
 
if (ln != "" && fn != "")
{
 
if (File.Exists(strPList + "/" + fn + "-" + ln + ".pdf"))
{
email.Attachments.ForEach(mime => mime.Save(strPList + "/" + fn + "-" + ln + "(" + uid + ")" + ".pdf"));
}
else
{
email.Attachments.ForEach(mime => mime.Save(strPList + "/" + fn + "-" + ln + ".pdf"));
}
}
else
{
email.Attachments.ForEach(mime => mime.Save(strPList + "/" + mime.SafeFileName));
}
 
}
catch (Exception err)
{
string strPList = "c:/PatientList/" + currentdt + '/';
email.Attachments.ForEach(mime => mime.Save(strPList + "/" + mime.SafeFileName));
}
 
//Delete mail message
//imap.DeleteMessageByUID(uid);
 
//imap.CreateFolder("Old Mails");
 
imap.MoveByUID(uid, "Old Mails");
 
}
 
imap.Close();

// lblmessage.Visible = true;
MessageBox.Show("Faxes downloaded successfully....");
dgvmails.Rows.Clear();
txtPatientNm.Text = "";
txtNoFax.Text = "";
// lblmessage.Text = "";
this.Refresh();
 

 
}
}
 
}
}
else
{

}
 
}
catch (Exception err)
{
MessageBox.Show("Connection error! Please try after some time", "AHA Fax Downloader", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
pb.Value = 0;
}
 
private void btnDownloadSelected_Click(object sender, EventArgs e)
{
pb.Maximum = 20;
pb.Value = 5;
int flag = 0;
foreach (DataGridViewRow row in dgvmails.Rows)
 
//for (int i = 0; i <= dgvmails.Rows.Count - 1; i++)
{
if ((Boolean)((DataGridViewCheckBoxCell)row.Cells[0]).FormattedValue)
 
// if ((bool)dgvmails.Rows[i].Cells[0].Value = CheckState.Checked)
{
flag = 1;
}
}
if (flag == 0)
{
MessageBox.Show("Please select the record", "AHA Fax Downloader", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
 
// lblmessage.Text = "Please wait while Downloading Faxes";
try
{
if (MessageBox.Show("Are you sure to Download Selected Faxes", "AHA Fax Downloader", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
{
 

//Please purchase Mail.dll license at http://www.lesnikowski.com/mail/
string dirStr = "c:/Downloads";
 

string currentdt = String.Format("{0:dd-MM-yyyy}", System.DateTime.Now);
string str = "c:/Downloads/" + currentdt.ToString();
string dirStr2 = "c:/TempDownloads/TempFiles";
 
if (Directory.Exists(dirStr))
{
 

}
else
{
 
Directory.CreateDirectory(dirStr);
 
}
 
if (Directory.Exists(str))
{
 
}
else
{
Directory.CreateDirectory(str);
}
 
if (Directory.Exists(str))
{
 
using (Imap imap = new Imap())
{
imap.Connect("smtp.gmail.com");
//imap.Login("software@gmailp.com", "A99");
imap.Login("ahafax@gmail.com", "a999");
 
imap.SelectInbox();
List uids = imap.SearchFlag(Flag.All);
if (uids.Count < 1)
{
MessageBox.Show("MailBox is empty");
}
else
{
for (int l = 0; l < dgvmails.Rows.Count; l++)
//foreach (long uid in uids)
//if ((Boolean)((DataGridViewCheckBoxCell)row.Cells[0]).FormattedValue)
{
if ((Boolean)dgvmails.Rows[l].Cells[0].FormattedValue)
{
long uid = Convert.ToInt64(dgvmails.Rows[l].Cells[4].Value);
string eml = imap.GetMessageByUID(uid);
IMail email = new MailBuilder().CreateFromEml(eml);
 
// save all attachments to disk
email.Attachments.ForEach(mime => mime.Save(str + "/" + mime.SafeFileName));
createPatientList();
email.Attachments.ForEach(mime => mime.Save(dirStr2 + "/" + +uid + ".pdf"));
 
//Convert pdf to .tiff

string path = @"c:\TempDownloads\TempFiles\" + uid + ".pdf";//+ txtPatientNm.Text + "-" + String.Format("{0:MM-dd-yyyy}", dateTimePicker1.Text.ToString()) + ".pdf";
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
document = new Document(file);
}

ConvertToTiffOptions tiffOptions = new ConvertToTiffOptions(getDPI(), getCompression());
 
string tiffile = @"c:\TempDownloads\ImageFiles\" + uid + ".tiff";//Image Files\" + txtPatientNm.Text + "-" + String.Format("{0:MM-dd-yyyy}", dateTimePicker1.Text.ToString()) + ".tiff";
using (FileStream file = new FileStream(tiffile, FileMode.Create, FileAccess.Write))
{
document.ConvertToTiff(file, tiffOptions);
file.Close();

}
 
//OCR(get Patient Name)
try
{
//CheckFileType(@"c:\TempDownloads\ImageFiles\");
//******************************************
 
string fileExtension = ".tiff";
//get file name without extenstion
string fileName = tiffile.Replace(fileExtension, string.Empty);
 
//Check for JPG File Format
if (fileExtension == ".tiff" || fileExtension == ".TIFF") // or // ImageFormat.Jpeg.ToString()
{
 
try
{
//OCR Operations ...
 
MODI.Document md = new MODI.Document();
md.Create(Convert.ToString(tiffile));
md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
string myText = "";
 
for (int i = 0; i < md.Images.Count; i++)
{
MODI.Image image = (MODI.Image)md.Images[i];
 
myText = myText + " " + image.Layout.Text.ToString();

}
myText = myText.Replace("'", "''").ToString();
 
//********************

txtPatientNm.Text = Extracttext(myText).ToString();

}
catch (Exception)
{
//MessageBox.Show("This Image hasn't a text or has a problem",
//"OCR Notifications",
//MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
 

//*************************************
//***************************************
string ln = "";
string fn = "";
// File.Delete(@"C:\PatientList2\ImageFiles\temp.tiff");
 
string Message = txtPatientNm.Text.ToString();
string[] Record = Regex.Split(Message.Trim(), " ");
if (Record.Length > 1)
{
ln = Record[1].ToString();
fn = Record[0].ToString();
}
 
string strPList = "c:/PatientList/" + currentdt + '/';
 
if (ln != "" && fn != "")
{
 
if (File.Exists(strPList + "/" + fn + "-" + ln + ".pdf"))
{
email.Attachments.ForEach(mime => mime.Save(strPList + "/" + fn + "-" + ln + "(" + uid + ")" + ".pdf"));
}
else
{
email.Attachments.ForEach(mime => mime.Save(strPList + "/" + fn + "-" + ln + ".pdf"));
}
}
else
{
 
email.Attachments.ForEach(mime => mime.Save(strPList + "/" + mime.SafeFileName));
}
 
}
catch (Exception err)
{
string strPList = "c:/PatientList/" + currentdt + '/';
 
email.Attachments.ForEach(mime => mime.Save(strPList + "/" + mime.SafeFileName));
 
}
 
//Delete mail message
//imap.DeleteMessageByUID(uid);
 
//imap.CreateFolder("Old Mails");
 
imap.MoveByUID(uid, "Old Mails");
 
}
 

}
imap.Close();
// lblmessage.Visible = true;
MessageBox.Show("Faxes downloaded successfully....");
dgvmails.Rows.Clear();
getmailbox();
txtPatientNm.Text = "";
txtNoFax.Text = "";
this.Refresh();

}
}
 
}
}
else
{
 
}
 
}
catch (Exception err)
{
//MessageBox.Show("Connection error! Please try after some time", "AHA Fax Downloader", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
 
pb.Value = 0;
}
 
private void btnLogout_Click(object sender, EventArgs e)
{
this.Hide();
Application.Exit();
}
 
private void btnDel_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Are you sure to Delete Selected Faxes", "AHA Fax Downloader", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
{
 
using (Imap imap = new Imap())
{
imap.Connect("smtp.gmail.com");
//imap.Login("software@gmail.com", "A99");
imap.Login("ahafax@gmail.com", "a89");
imap.SelectInbox();
List uids = imap.SearchFlag(Flag.All);
if (uids.Count < 1)
{
MessageBox.Show("MailBox is empty");
}
else
{
for (int l = 1; l < dgvmails.Rows.Count; l++)
{
if ((Boolean)dgvmails.Rows[l].Cells[0].FormattedValue)
{
 
long uid = Convert.ToInt64(dgvmails.Rows[l].Cells[4].Value);
string eml = imap.GetMessageByUID(uid);
IMail email = new MailBuilder().CreateFromEml(eml);
MessageBox.Show(uid.ToString());
//Delete mail message
imap.DeleteMessageByUID(uid);
 
}
}
imap.Close();
// lblmessage.Visible = true;
MessageBox.Show("Selected Faxes deleted successfully....");
getmailbox();
 
}
}
 
}
else
{
}
}
 
private void btnLogout_Click_1(object sender, EventArgs e)
{
//LoginForm lf = new LoginForm();
//lf.ShowDialog();
this.Hide();
Application.Exit();
}
 
public void gridrowcolor(DataGridView gridname, int count)
{
for (int i = 0; i <= count - 1; i++)
{
if (i % 2 == 0)
{
gridname.Rows[i].DefaultCellStyle.BackColor = Color.White;
}
else
{
gridname.Rows[i].DefaultCellStyle.BackColor = Color.LightSteelBlue;
}
}
}

 
}
}
  Permalink  
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 490
1 Gihan Liyanage 338
2 ChauhanAjay 180
3 Vinay Mistry 160
4 Sergey Alexandrovich Kryukov 153
0 Sergey Alexandrovich Kryukov 9,011
1 OriginalGriff 7,941
2 CPallini 2,603
3 Richard MacCutchan 2,121
4 Abhinav S 1,928


Advertise | Privacy | Mobile
Web02 | 2.8.140827.1 | Last Updated 9 Oct 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100