# Thanks to Dave Dreezer for his work on UBB Mail!

sub ubb_mail {
	local ($EmailTo, $EmailFrom, $EmailReplyTo, $BCCList, $Subject, $TextMessage, $HTMLMessage, $CCList) = @_;

	use lib "$vars_config{CGIPath}/Modules/";
	use Modules::MIME::Lite;

	my($mimetype, $mimeflag);	#figure out the MIME type before creation
	if($vars_email{email_format} eq "ascii") {	# if it's ASCII
		$mimetype = q!text/plain!;
		$mimeflag = 3;
	} elsif(($in{email_type}) && ($in{email_type} ne 'html')) {	# and we're not getting overridden
		$mimetype = q!text/plain!;
		$mimeflag = 2;
	} else {	# not ASCII, not overridden, therefore HTML
		$mimetype = q!multipart/mixed!;
		$mimeflag = 1;
	}

	if($mimeflag == 1) {
		die "Confused - set to HTML, but no HTML message" unless $HTMLMessage;
	} elsif($mimeflag == 2) {
		die "Confused - set to text via override, but no text message" unless $TextMessage;
	} elsif($mimeflag == 3) {
		die "Confused - set to text, but no text message" unless $TextMessage;
	} else {
		die "Confused - set to neither text nor HTML!";
	}


	my $msg = MIME::Lite->new(
		"To"       => "$EmailTo",
		"From"     => "$EmailFrom",
		"Reply-To" => "$EmailReplyTo",
		"cc"       => "$CCList",
		"bcc"      => "$BCCList",
		"Subject"  => "$Subject",
		"Type"     => "$mimetype",
	);

	if ($TextMessage ne '') {	# sending plaintext email - inline it
		$TextMessage = UBBCGI::unescapeHTML($TextMessage);
		$msg->data([$TextMessage]);

	} elsif ($HTMLMessage ne '') {	# sending HTML - attach it inline
		my $html_message = $msg->attach(
			Type => 'text/html',
			Data => [$HTMLMessage]
		);

	} else {	# no plaintext, no HTML -> admin didn't config?

		&StandardHTML("$vars_wordlets_err{tell_admin_to_config_email}<br />...");
		exit;
	}


	unless ($vars_email{email_format}) {	# no plaintext, no HTML -> admin didn't config?
		&StandardHTML($vars_wordlets_err{tell_admin_to_config_email});
		exit;
	}

	if ($vars_email{SMTPEmail} eq 'On') {	# figure out which method we're using
		MIME::Lite->send('smtp', "$vars_email{EmailServer}");
	} else {
		MIME::Lite->send('sendmail', "$vars_email{SendMailLocation} -t -oi");
	}

	$msg->send;	# send the mail itself


}    # end ubb_mail subroutine

1;
